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 1wNdtZ-000xSn-0H for pgsql-hackers@arkaria.postgresql.org; Thu, 14 May 2026 21:47:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wNdtY-00FFU7-05 for pgsql-hackers@arkaria.postgresql.org; Thu, 14 May 2026 21:47:04 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wNdtX-00FFTz-1q for pgsql-hackers@lists.postgresql.org; Thu, 14 May 2026 21:47:03 +0000 Received: from mail-yx1-xb136.google.com ([2607:f8b0:4864:20::b136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wNdtV-00000000bQh-2dZx for pgsql-hackers@postgresql.org; Thu, 14 May 2026 21:47:02 +0000 Received: by mail-yx1-xb136.google.com with SMTP id 956f58d0204a3-65dbe04fc1bso7448604d50.1 for ; Thu, 14 May 2026 14:47:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778795220; cv=none; d=google.com; s=arc-20240605; b=JnyDn8rMEhPEPwhwCKoibjmMb1iWhja0ZgC+D1xOB3NDs6X8sXzmSVr6MSf5YAO7x8 KkMsulzSYl0e4YrtV/J8s21r4scRMc+fCLfeZEmAdiGzO1grc9nbFzaytHOi+khVF//G nNuTy3MY3muXoKnJrTSHT3cfl+/H5Zcb4viv1Ziw8qpqNl7KcAjsswf836RrSlQkUODz 0ZVwhcSv1mNJe1BaahKAEBufRYckR7auVqqvtpVi83j1JNfvTcrPf/Lc/K02iOvbcqpV rXB1DKNqnHrWhn7DSdye2jk0ZGoieEFcUd0ePad3Qe8XyUFHmcG9J3TXzrK7YGD6AA0D qh+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=1XEoYsTsWr1dqfYiYNmwfrpxMjWjw4GLx2y87iotXSI=; fh=ApvIqM0GLOrTaOhLWhViW4j3SopaGutq3do9iYK5xb8=; b=f1co3XshBnTUxnWxY4NWXBRC571FOCl/6qi2trz2KDD3zhhNDGZJce5f7eS6FcS4DA H1z4bQMjsWLcUxMUzg3ZHloLzms7Ju6538R4LAYwtjsBJBwArrFKYNqRdFeULSOu55m2 fIGass8+JZjED3XYLVcXrtZmmunzbXZNBImW/2GoqgSoR3U9eOpRfWfWvWw4VExgdQ3u eT5+62WBbLdTs7qdmh4ZnS81H4No1hnqCz8XfyvpNahDEVasFUVSi4dbKALcWqGW4ms8 yuUgL32t9/V5eDfkctf7bS1sKLNpONanWeLS26Ko+UrDEqpEV5gVeXbP6H1ymfvAGmha gCTA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=percona.com; s=google; t=1778795220; x=1779400020; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1XEoYsTsWr1dqfYiYNmwfrpxMjWjw4GLx2y87iotXSI=; b=ZcLHl3rxoE89ceWT6u8JuDFxr8lTubFSUy0S+mx/wJhniVgN7KYe2OJ/1kTJTMrRPi dmLw+62h7PCWiqR8vgt2FuiS7TQ9Qq3tvDw7J4BYsm4mfKszYQoqYDPekFCQsJJkbJ3l s3BBz1o3Thfj9v5rkol2RCFS5500D8M4VRO4o= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778795220; x=1779400020; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1XEoYsTsWr1dqfYiYNmwfrpxMjWjw4GLx2y87iotXSI=; b=bgXAmfvNBrnLgJ8jK0IiVV2i5JiZ7nGWYz2zOSpcdew04WsFPeRFm5ZQHf1UIhq9+O lnyMXKuz0lQafD3KGQRXNvqXwcoKRyJ+YW1eMs2DAgL+UZgXdABXPpvJmJQhaV2LFMT2 8ieRUNvWXBl042r8ynVITl1JmkRHHt8T4XMyxUVzr+6H9+t0ZEh95JL9kZPUygCwqXZq OOH3FsB5+LR9yFV1vOF5c7FpDxeH74clHqc+UuKIpL63uhP9GL2+g412hM+GGxSo0YPv BlVOwmRLDNY4gwsMQyQNrEJyG2n52+4APfbbdnVFcgeoZRscGqSoqm80pZMo/R7nwTc9 zRDw== X-Forwarded-Encrypted: i=1; AFNElJ/rBq1ArOKFXu7w+KCMSNNk9SY9+vD1ZR8IKxJD9vxBdGwo5Omx3uAZV0Uk8SIzGWaVRIGFMeJA1m7Grtpj@postgresql.org X-Gm-Message-State: AOJu0Ywuiy8xdumzO9A2DepoFWto0+ogiYUUX6KOuV2EKpEZO2H4vu0X 8pSpJeDtDdgj2sjawC9C35Kdkhk3bViYDQFEpy20vgqi6Lu/JWRTzKY9Ov/0QHr+Mh6YlAIc3Ne sI9tsZAbtZSixiNAO15mJrnRIM3CCbXF2uF7SaxiPt46Wy3fKQM+wMfC2c5aSK0f3G+jQg4TzYe p+MlKx3XDjbZRK5i8NiJr32H0BmGylXNqZH/LswsmmQO3IvH/3kdGEQ4eM5bn/FCmkU8Hx8I+6z XhP8SqunLlTs36mQFhWbVAf7kZsRxha2xDW/mgCrc3GqIF8AhofPaHAHgRm9aeFNGI= X-Gm-Gg: Acq92OGmkJyEtyobQPdAprYSeRaqMWS4Txnj8mvePa97ERQ1RgMa7qwi69zHHJfnB9Z 79NOTVBkTzT9NZyWqRZV4TsZ5GLiKwRplaZAJkbZ4tdv43CBZMzJwUklTxJm+Kt9NH6LJizbuKW ScMfXnBIhvL+bduqw+Umh2U3KwbQmXpCE28lpJQJB2MkBGczXaoCJCYyzE/X2TK5oCtleNxe7Qx H3CzzGo4REPoOaEYCAYUkJ0ItE6Sefjb73EyX5zpBqYLhwTBA1bFSlUCJOLAa++jDsnRr4hmDDK VQqKVDeERGmA37LeRBdFbFx4ecAzl7EZkhOc8Ca3QetOGFc1GtH7h4hiU2Brqs3s4tJm X-Received: by 2002:a05:690c:6608:b0:7b2:1bf1:8016 with SMTP id 00721157ae682-7c9593b7207mr13991927b3.2.1778795219916; Thu, 14 May 2026 14:46:59 -0700 (PDT) MIME-Version: 1.0 References: <20260324151133.7940a5c1f2ebd594d54da481@sraoss.co.jp> <20260325012847.e026ba1860c07288efe3e97d@sraoss.co.jp> <20260326192203.e6dbb8d80f8d27dc15ceee59@sraoss.co.jp> <20260327163549.b5df519c0099970ddbb3412d@sraoss.co.jp> <20260328161802.f35b5a3e739566ffd7c1053b@sraoss.co.jp> <20260413170551.5ec43ba5a2c848f0d46c6a0b@sraoss.co.jp> <20260427203207.32aa6ca37f2a18a05508dfda@sraoss.co.jp> In-Reply-To: From: Zsolt Parragi Date: Thu, 14 May 2026 22:46:47 +0100 X-Gm-Features: AVHnY4Kh7PDrOPmbrvnj2g2VbdHhzm715pZTkQVc9SNIScDSD0ryjLQSPL7-VpY Message-ID: Subject: Re: Track skipped tables during autovacuum and autoanalyze To: Sami Imseih Cc: Yugo Nagata , Michael Paquier , Pgsql Hackers Content-Type: multipart/mixed; boundary="00000000000036b9af0651ce0902" X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: percona,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000036b9af0651ce0902 Content-Type: text/plain; charset="UTF-8" Hello! + TimestampTz last_skipped_vacuum_time; /* user initiated vacuum */ + PgStat_Counter skipped_vacuum_count; + TimestampTz last_skipped_autovacuum_time; /* autovacuum initiated */ + PgStat_Counter skipped_autovacuum_count; + TimestampTz last_skipped_analyze_time; /* user initiated */ + PgStat_Counter skipped_analyze_count; + TimestampTz last_skipped_autoanalyze_time; /* autovacuum initiated */ + PgStat_Counter skipped_autoanalyze_count; + Doesn't these also require a PGSTAT_FILE_FORMAT_ID change? There's also an asymmetric case for the skipped counters, is that intentional? | Command | `skipped_vacuum_count` | `skipped_analyze_count` | |-----------------------------------------|------------------------|-------------------------| | `VACUUM (FULL, ANALYZE, SKIP_LOCKED) t` | 0 | 1 | | `VACUUM (ANALYZE, SKIP_LOCKED) t` | 1 | 1 | | `VACUUM (FULL, SKIP_LOCKED) t` | 0 | 0 | > Initially, I was concerned that something might go wrong if a concurrent > session performed DROP TABLE or ALTER TABLE RENAME between RangeVarGetRelidExtended() > and RangeVarGetRelid(), but I could not find any actual issue. Even when the table > name is changed, the correct statistics entry is updated correctly. A DROP TABLE can cause a missed skip in statistics, which is reproducible with a custom injection point and tap test, see the attached patch. The race window is quite minimal, but it exists. --00000000000036b9af0651ce0902 Content-Type: application/octet-stream; name="0001-DROP-TABLE-race-in-expand_vacuum_rel-skip-lock-path.patch.nocfbot" Content-Disposition: attachment; filename="0001-DROP-TABLE-race-in-expand_vacuum_rel-skip-lock-path.patch.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mp60pwie0 RnJvbSAzYzM4NzA5NTk3NzI4NjljZWVkYzQ0NDVjNWY4OGZmNTRmMDFiOGFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBac29sdCBQYXJyYWdpIDxwYXJyYWdpenNAZ21haWwuY29tPgpE YXRlOiBUaHUsIDE0IE1heSAyMDI2IDIxOjE2OjI0ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gRFJP UCBUQUJMRSByYWNlIGluIGV4cGFuZF92YWN1dW1fcmVsIHNraXAtbG9jayBwYXRoCgotLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy90 ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8ICAxICsKIC4uLi90LzA1 M192YWN1dW1fc2tpcF9sb2NrZWRfZHJvcF9yYWNlLnBsICAgICB8IDU0ICsrKysrKysrKysrKysr KysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlY292ZXJ5L3QvMDUzX3ZhY3V1bV9za2lwX2xvY2tlZF9kcm9wX3JhY2Uu cGwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IDUxYzVmYzJmZGFmLi4wZWRiNTZlNjdjOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtLmMKQEAgLTk2MSw2ICs5NjEsNyBAQCBleHBhbmRfdmFjdXVtX3JlbChW YWN1dW1SZWxhdGlvbiAqdnJlbCwgTWVtb3J5Q29udGV4dCB2YWNfY29udGV4dCwKIAkJCQkJCSBl cnJtc2coInNraXBwaW5nIGFuYWx5emUgb2YgXCIlc1wiIC0tLSBsb2NrIG5vdCBhdmFpbGFibGUi LAogCQkJCQkJCQl2cmVsLT5yZWxhdGlvbi0+cmVsbmFtZSkpKTsKIAorCQkJSU5KRUNUSU9OX1BP SU5UKCJleHBhbmQtdmFjdXVtLXJlbC1za2lwLWxvY2tlZCIsIE5VTEwpOwogCQkJLyogR2V0IHJl bGlkIGZvciBzdGF0aXN0aWNzIHJlcG9ydGluZyAqLwogCQkJcmVsaWQgPSBSYW5nZVZhckdldFJl bGlkKHZyZWwtPnJlbGF0aW9uLCBOb0xvY2ssIHRydWUpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWNvdmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmlu ZGV4IDM2ZDc4OTcyMGEzLi4wNTE5MGIyNjkzMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKQEAgLTYx LDYgKzYxLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDUwX3JlZG9fc2VnbWVudF9taXNzaW5n LnBsJywKICAgICAgICd0LzA1MV9lZmZlY3RpdmVfd2FsX2xldmVsLnBsJywKICAgICAgICd0LzA1 Ml9jaGVja3BvaW50X3NlZ21lbnRfbWlzc2luZy5wbCcsCisgICAgICAndC8wNTNfdmFjdXVtX3Nr aXBfbG9ja2VkX2Ryb3BfcmFjZS5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDUzX3ZhY3V1bV9za2lwX2xvY2tlZF9kcm9wX3JhY2UucGwgYi9z cmMvdGVzdC9yZWNvdmVyeS90LzA1M192YWN1dW1fc2tpcF9sb2NrZWRfZHJvcF9yYWNlLnBsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40MTdmNmVjMjU0MQotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUzX3ZhY3V1bV9za2lwX2xvY2tlZF9k cm9wX3JhY2UucGwKQEAgLTAsMCArMSw1NCBAQAordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBG QVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRub2RlID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtYWluJyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5z dGFydDsKKworJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxeworCUNSRUFURSBFWFRF TlNJT04gaW5qZWN0aW9uX3BvaW50czsKKwlDUkVBVEUgVEFCTEUgZm9vIChpZCBpbnQpOworCVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZXhwYW5kLXZhY3V1bS1yZWwtc2tpcC1sb2Nr ZWQnLCAnd2FpdCcpOworfSk7CisKK215ICRsb2NrZXIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycpOworJGxvY2tlci0+cXVlcnlfc2FmZShxe0JFR0lOOyBMT0NLIFRBQkxFIGZv byBJTiBBQ0NFU1MgRVhDTFVTSVZFIE1PREU7fSk7CisKK215ICRsb2dfb2Zmc2V0ID0gLXMgJG5v ZGUtPmxvZ2ZpbGU7CisKK215ICR2YWN1dW1lciA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bv c3RncmVzJyk7CiskdmFjdXVtZXItPnF1ZXJ5X3VudGlsKHFyL3N0YXJ0LywKKwlxcShcXGVjaG8g c3RhcnRcblZBQ1VVTSAoU0tJUF9MT0NLRUQpIGZvbztcbikpOworCiskbm9kZS0+d2FpdF9mb3Jf ZXZlbnQoJ2NsaWVudCBiYWNrZW5kJywgJ2V4cGFuZC12YWN1dW0tcmVsLXNraXAtbG9ja2VkJyk7 CisKK29rKCAkbm9kZS0+bG9nX2NvbnRhaW5zKAorCQlxci9za2lwcGluZyB2YWN1dW0gb2YgImZv byIgLS0tIGxvY2sgbm90IGF2YWlsYWJsZS8sCisJCSRsb2dfb2Zmc2V0KSwKKwknVkFDVVVNIChT S0lQX0xPQ0tFRCkgd2FzIHNraXBwZWQgZHVlIHRvIGxvY2sgdW5hdmFpbGFiaWxpdHknKTsKKwor JGxvY2tlci0+cXVlcnlfc2FmZShxeworCUNPTU1JVDsKKwlEUk9QIFRBQkxFIGZvbzsKK30pOwor JGxvY2tlci0+cXVpdDsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNU IGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdleHBhbmQtdmFjdXVtLXJlbC1za2lwLWxvY2tlZCcp O30pOworJHZhY3V1bWVyLT5xdWl0OworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7 U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpO30pOworCitteSAkdG90YWwgPSAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJU0VMRUNUIGNvYWxlc2NlKHN1bShza2lwcGVk X3ZhY3V1bV9jb3VudCksIDApCisJRlJPTSBwZ19zdGF0X2FsbF90YWJsZXM7Cit9KTsKK2Nob21w ICR0b3RhbDsKKworY21wX29rKCR0b3RhbCwgJz49JywgMSwgJ3NraXAgZXZlbnQgcmVjb3JkZWQg aW4gcGdfc3RhdF9hbGxfdGFibGVzJyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi41NC4wCgo= --00000000000036b9af0651ce0902--