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 1rE7nc-004HvM-3m for pgsql-bugs@arkaria.postgresql.org; Fri, 15 Dec 2023 13:00:16 +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 1rE7nX-001qcC-Kw for pgsql-bugs@arkaria.postgresql.org; Fri, 15 Dec 2023 13:00:11 +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.94.2) (envelope-from ) id 1rE7nX-001qc4-5H for pgsql-bugs@lists.postgresql.org; Fri, 15 Dec 2023 13:00:11 +0000 Received: from mail-lf1-x129.google.com ([2a00:1450:4864:20::129]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rE7nR-00AWhv-CD for pgsql-bugs@lists.postgresql.org; Fri, 15 Dec 2023 13:00:09 +0000 Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-50e1d61b657so663762e87.0 for ; Fri, 15 Dec 2023 05:00:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702645204; x=1703250004; darn=lists.postgresql.org; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=5rHelIUtcQ0A9cp2WPdolA9HdvYDZB8ov1kJXJcwREA=; b=AjEXGtPvixLjUVOMoMIAu8YgJpwktCuxSAMWey4/HGkTrQH+oZMDcuOE0ac4m0if63 sYF1Yj3fyD4kiMSRzORyZE2NHuAX2P671w4Huz2aSLZmsa/XkA9gSIueNJ3RbhfVMois BjAaSzrbSmYikj0oN2qgbBjDNqUfcFnGEKwxSxOwN4qHEIXewwrKiPqoGSFAiKxrc/pk YzHqxuQsu81Rdlmq+AdwvOC3aojbft3ALe8AVO1frN1fHPx4vln3e+PCPpBZy2MklJyz io/QHrDsZqUMZ66IRL9A70VmgeDpkRjaUIbd9wgrIn5Z13p+5g8aMYxMHx3MmOMigtfg nD3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702645204; x=1703250004; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=5rHelIUtcQ0A9cp2WPdolA9HdvYDZB8ov1kJXJcwREA=; b=IdpdXphU0A2gVZw1/WjqqW+7c3XkNXTFJStM5cugJ0D3DJCzpaqd/33Rqu5MuO3UQ0 PeLykdk3xffFWTea4cCKyfVFvz881KR2vn1dar0qFue514ccRl3DuUM81PvXeCKPWvKY UQA+sLT5S+La6q2ABG3no+gfSxJ1Ph5n3GJTxoEOJ9fCkceBkYqSXl/1sL3K0ZxY7KEX TOK/uqyFFpVe+gy/JgakpImHaLzrkWBCj/KQq8oZporUQ41+R8SK8LNUkrdeznvvDV9s GEY9dRp3Lfvmtxxw3HW8xHgLF73rrwFacQT6C9er3vXkYIWL3NL4Ci+DwBgMcKdzycxm zXFg== X-Gm-Message-State: AOJu0YznvI4kr5zNo8TdT6AatLjJCe4ZXmHywCnzXd7zH0eymUN9QRtO snTZI2SzFMxtsGJsrZwUYbE= X-Google-Smtp-Source: AGHT+IGWn2zERVbK00PDjZdcEKywGJ4Ud9/89xjlKuvVU/9wpiH0z3T0+gyOJ9jDszKF2fL/PAyYRA== X-Received: by 2002:a05:6512:aca:b0:50b:e056:396a with SMTP id n10-20020a0565120aca00b0050be056396amr6815820lfu.28.1702645203354; Fri, 15 Dec 2023 05:00:03 -0800 (PST) Received: from [1.0.0.7] ([178.155.26.88]) by smtp.gmail.com with ESMTPSA id dw11-20020a0565122c8b00b0050c0c46e1desm2139656lfb.33.2023.12.15.05.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 15 Dec 2023 05:00:02 -0800 (PST) Content-Type: multipart/mixed; boundary="------------OaRwwGtya3OWQgfJ7ynLCbzW" Message-ID: <11c0916f-82de-decf-c27a-c01a4f8dfcef@gmail.com> Date: Fri, 15 Dec 2023 16:00:01 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: BUG #18246: pgstathashindex() attempts to read invalid file for hash index attached to partitioned table Content-Language: en-US From: Alexander Lakhin To: Michael Paquier , pgsql-bugs@lists.postgresql.org References: <18246-f4d9ff7cb3af77e6@postgresql.org> <876b6e52-f068-648a-3f0e-7eaabd57cf77@gmail.com> In-Reply-To: <876b6e52-f068-648a-3f0e-7eaabd57cf77@gmail.com> 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. --------------OaRwwGtya3OWQgfJ7ynLCbzW Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 13.12.2023 21:00, Alexander Lakhin wrote: > Hello Michael, > > 13.12.2023 17:18, Michael Paquier wrote: >> On Wed, Dec 13, 2023 at 09:00:01AM +0000, PG Bug reporting form wrote: >>> This anomaly can be observed since 8b08f7d48 from 2018-01-19, but IMO the >>> culprit is e759854a0 from 2017-02-03, which introduced the following >>> asymmetry in pgstatindex.c: >>> if (!IS_INDEX(rel) || !IS_BTREE(rel)) >>> if (!IS_INDEX(rel) || !IS_GIN(rel)) >>> But: >>> if (!IS_HASH(rel)) >> Fun, let's fix that.  Would you like to write a patch? > > Yes, please look at the attached, Looking around, I found the similar index_open() usage within pageinspect, function hash_bitmap_info(): CREATE EXTENSION pageinspect; CREATE TABLE t (a int, b int[], c int) PARTITION BY RANGE (a); CREATE INDEX c_idx ON t USING hash(c); SELECT hash_bitmap_info('c_idx'::regclass, 1); Leads to: TRAP: failed Assert("false"), File: "bufmgr.c", Line: 3606, PID: 3984550 I'm inclined to leave index_open() there for the internal consistency inside pageinspect, and to use the same condition as in bt_index_block_validate(), which called by functions bt_page_stats(...), bt_multi_page_stats(...), bt_page_items(relname text, blkno bigint). Functions for other index types, brin/gin/gist, don't read the index, instead they receive a page as input. Please look at the additional patch. Best regards, Alexander --------------OaRwwGtya3OWQgfJ7ynLCbzW Content-Type: text/x-patch; charset=UTF-8; name="v1-fix-hash_bitmap_info.patch" Content-Disposition: attachment; filename="v1-fix-hash_bitmap_info.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvaGFzaGZ1bmNzLmMgYi9jb250cmli L3BhZ2VpbnNwZWN0L2hhc2hmdW5jcy5jCmluZGV4IGY0M2YwOTI4YjEuLjU5YWY0N2ZmZTcg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvaGFzaGZ1bmNzLmMKKysrIGIvY29u dHJpYi9wYWdlaW5zcGVjdC9oYXNoZnVuY3MuYwpAQCAtMjcsNiArMjcsNyBAQCBQR19GVU5D VElPTl9JTkZPX1YxKGhhc2hfcGFnZV9pdGVtcyk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGhh c2hfYml0bWFwX2luZm8pOwogUEdfRlVOQ1RJT05fSU5GT19WMShoYXNoX21ldGFwYWdlX2lu Zm8pOwogCisjZGVmaW5lIElTX0lOREVYKHIpICgociktPnJkX3JlbC0+cmVsa2luZCA9PSBS RUxLSU5EX0lOREVYKQogI2RlZmluZSBJU19IQVNIKHIpICgociktPnJkX3JlbC0+cmVsYW0g PT0gSEFTSF9BTV9PSUQpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpAQCAtNDE1LDcgKzQxNiw3IEBAIGhhc2hfYml0bWFwX2luZm8o UEdfRlVOQ1RJT05fQVJHUykKIAogCWluZGV4UmVsID0gaW5kZXhfb3BlbihpbmRleFJlbGlk LCBBY2Nlc3NTaGFyZUxvY2spOwogCi0JaWYgKCFJU19IQVNIKGluZGV4UmVsKSkKKwlpZiAo IUlTX0lOREVYKGluZGV4UmVsKSB8fCAhSVNfSEFTSChpbmRleFJlbCkpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJ IGVycm1zZygiXCIlc1wiIGlzIG5vdCBhICVzIGluZGV4IiwK --------------OaRwwGtya3OWQgfJ7ynLCbzW Content-Type: text/x-patch; charset=UTF-8; name="v1-fix-pgstathashindex.patch" Content-Disposition: attachment; filename="v1-fix-pgstathashindex.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvZXhwZWN0ZWQvcGdzdGF0dHVwbGUu b3V0IGIvY29udHJpYi9wZ3N0YXR0dXBsZS9leHBlY3RlZC9wZ3N0YXR0dXBsZS5vdXQKaW5k ZXggZTRhYzg2ZjllMy4uMjgzODU2ZTEwOSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0 dXBsZS9leHBlY3RlZC9wZ3N0YXR0dXBsZS5vdXQKKysrIGIvY29udHJpYi9wZ3N0YXR0dXBs ZS9leHBlY3RlZC9wZ3N0YXR0dXBsZS5vdXQKQEAgLTE1Myw2ICsxNTMsNyBAQCBFUlJPUjog IHJlbGF0aW9uICJ0ZXN0X2hhc2hpZHgiIGlzIG5vdCBhIEdJTiBpbmRleAogLS0gY2hlY2sg dGhhdCB1c2luZyBhbnkgb2YgdGhlc2UgZnVuY3Rpb25zIHdpdGggdW5zdXBwb3J0ZWQgcmVs YXRpb25zIHdpbGwgZmFpbAogY3JlYXRlIHRhYmxlIHRlc3RfcGFydGl0aW9uZWQgKGEgaW50 KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEpOwogY3JlYXRlIGluZGV4IHRlc3RfcGFydGl0aW9u ZWRfaW5kZXggb24gdGVzdF9wYXJ0aXRpb25lZChhKTsKK2NyZWF0ZSBpbmRleCB0ZXN0X3Bh cnRpdGlvbmVkX2hhc2hfaW5kZXggb24gdGVzdF9wYXJ0aXRpb25lZCB1c2luZyBoYXNoKGEp OwogLS0gdGhlc2Ugc2hvdWxkIGFsbCBmYWlsCiBzZWxlY3QgcGdzdGF0dHVwbGUoJ3Rlc3Rf cGFydGl0aW9uZWQnKTsKIEVSUk9SOiAgY2Fubm90IGdldCB0dXBsZS1sZXZlbCBzdGF0aXN0 aWNzIGZvciByZWxhdGlvbiAidGVzdF9wYXJ0aXRpb25lZCIKQEAgLTE3MSw3ICsxNzIsOSBA QCBFUlJPUjogIHJlbGF0aW9uICJ0ZXN0X3BhcnRpdGlvbmVkIiBpcyBub3QgYSBidHJlZSBp bmRleAogc2VsZWN0IHBnc3RhdGdpbmluZGV4KCd0ZXN0X3BhcnRpdGlvbmVkJyk7CiBFUlJP UjogIHJlbGF0aW9uICJ0ZXN0X3BhcnRpdGlvbmVkIiBpcyBub3QgYSBHSU4gaW5kZXgKIHNl bGVjdCBwZ3N0YXRoYXNoaW5kZXgoJ3Rlc3RfcGFydGl0aW9uZWQnKTsKLUVSUk9SOiAgInRl c3RfcGFydGl0aW9uZWQiIGlzIG5vdCBhbiBpbmRleAorRVJST1I6ICByZWxhdGlvbiAidGVz dF9wYXJ0aXRpb25lZCIgaXMgbm90IGEgaGFzaCBpbmRleAorc2VsZWN0IHBnc3RhdGhhc2hp bmRleCgndGVzdF9wYXJ0aXRpb25lZF9oYXNoX2luZGV4Jyk7CitFUlJPUjogIHJlbGF0aW9u ICJ0ZXN0X3BhcnRpdGlvbmVkX2hhc2hfaW5kZXgiIGlzIG5vdCBhIGhhc2ggaW5kZXgKIGNy ZWF0ZSB2aWV3IHRlc3RfdmlldyBhcyBzZWxlY3QgMTsKIC0tIHRoZXNlIHNob3VsZCBhbGwg ZmFpbAogc2VsZWN0IHBnc3RhdHR1cGxlKCd0ZXN0X3ZpZXcnKTsKQEAgLTE4OCw3ICsxOTEs NyBAQCBFUlJPUjogIHJlbGF0aW9uICJ0ZXN0X3ZpZXciIGlzIG5vdCBhIGJ0cmVlIGluZGV4 CiBzZWxlY3QgcGdzdGF0Z2luaW5kZXgoJ3Rlc3RfdmlldycpOwogRVJST1I6ICByZWxhdGlv biAidGVzdF92aWV3IiBpcyBub3QgYSBHSU4gaW5kZXgKIHNlbGVjdCBwZ3N0YXRoYXNoaW5k ZXgoJ3Rlc3RfdmlldycpOwotRVJST1I6ICAidGVzdF92aWV3IiBpcyBub3QgYW4gaW5kZXgK K0VSUk9SOiAgcmVsYXRpb24gInRlc3RfdmlldyIgaXMgbm90IGEgaGFzaCBpbmRleAogY3Jl YXRlIGZvcmVpZ24gZGF0YSB3cmFwcGVyIGR1bW15OwogY3JlYXRlIHNlcnZlciBkdW1teV9z ZXJ2ZXIgZm9yZWlnbiBkYXRhIHdyYXBwZXIgZHVtbXk7CiBjcmVhdGUgZm9yZWlnbiB0YWJs ZSB0ZXN0X2ZvcmVpZ25fdGFibGUgKCkgc2VydmVyIGR1bW15X3NlcnZlcjsKQEAgLTIwNyw3 ICsyMTAsNyBAQCBFUlJPUjogIHJlbGF0aW9uICJ0ZXN0X2ZvcmVpZ25fdGFibGUiIGlzIG5v dCBhIGJ0cmVlIGluZGV4CiBzZWxlY3QgcGdzdGF0Z2luaW5kZXgoJ3Rlc3RfZm9yZWlnbl90 YWJsZScpOwogRVJST1I6ICByZWxhdGlvbiAidGVzdF9mb3JlaWduX3RhYmxlIiBpcyBub3Qg YSBHSU4gaW5kZXgKIHNlbGVjdCBwZ3N0YXRoYXNoaW5kZXgoJ3Rlc3RfZm9yZWlnbl90YWJs ZScpOwotRVJST1I6ICAidGVzdF9mb3JlaWduX3RhYmxlIiBpcyBub3QgYW4gaW5kZXgKK0VS Uk9SOiAgcmVsYXRpb24gInRlc3RfZm9yZWlnbl90YWJsZSIgaXMgbm90IGEgaGFzaCBpbmRl eAogLS0gYSBwYXJ0aXRpb24gb2YgYSBwYXJ0aXRpb25lZCB0YWJsZSBzaG91bGQgd29yayB0 aG91Z2gKIGNyZWF0ZSB0YWJsZSB0ZXN0X3BhcnRpdGlvbiBwYXJ0aXRpb24gb2YgdGVzdF9w YXJ0aXRpb25lZCBmb3IgdmFsdWVzIGZyb20gKDEpIHRvICgxMDApOwogc2VsZWN0IHBnc3Rh dHR1cGxlKCd0ZXN0X3BhcnRpdGlvbicpOwpAQCAtMjUzLDcgKzI1Niw3IEBAIEVSUk9SOiAg cmVsYXRpb24gInRlc3RfcGFydGl0aW9uIiBpcyBub3QgYSBidHJlZSBpbmRleAogc2VsZWN0 IHBnc3RhdGdpbmluZGV4KCd0ZXN0X3BhcnRpdGlvbicpOwogRVJST1I6ICByZWxhdGlvbiAi dGVzdF9wYXJ0aXRpb24iIGlzIG5vdCBhIEdJTiBpbmRleAogc2VsZWN0IHBnc3RhdGhhc2hp bmRleCgndGVzdF9wYXJ0aXRpb24nKTsKLUVSUk9SOiAgInRlc3RfcGFydGl0aW9uIiBpcyBu b3QgYW4gaW5kZXgKK0VSUk9SOiAgcmVsYXRpb24gInRlc3RfcGFydGl0aW9uIiBpcyBub3Qg YSBoYXNoIGluZGV4CiAtLSBhbiBhY3R1YWwgaW5kZXggb2YgYSBwYXJ0aXRpb25lZCB0YWJs ZSBzaG91bGQgd29yayB0aG91Z2gKIGNyZWF0ZSBpbmRleCB0ZXN0X3BhcnRpdGlvbl9pZHgg b24gdGVzdF9wYXJ0aXRpb24oYSk7CiBjcmVhdGUgaW5kZXggdGVzdF9wYXJ0aXRpb25faGFz aF9pZHggb24gdGVzdF9wYXJ0aXRpb24gdXNpbmcgaGFzaCAoYSk7CmRpZmYgLS1naXQgYS9j b250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGluZGV4LmMgYi9jb250cmliL3Bnc3RhdHR1cGxl L3Bnc3RhdGluZGV4LmMKaW5kZXggOGU1YTRkNmE2Ni4uNWMwNmJhNmRiNCAxMDA2NDQKLS0t IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRpbmRleC5jCisrKyBiL2NvbnRyaWIvcGdz dGF0dHVwbGUvcGdzdGF0aW5kZXguYwpAQCAtNjAwLDEwICs2MDAsOSBAQCBwZ3N0YXRoYXNo aW5kZXgoUEdfRlVOQ1RJT05fQVJHUykKIAlmbG9hdDgJCWZyZWVfcGVyY2VudDsKIAl1aW50 NjQJCXRvdGFsX3NwYWNlOwogCi0JcmVsID0gaW5kZXhfb3BlbihyZWxpZCwgQWNjZXNzU2hh cmVMb2NrKTsKKwlyZWwgPSByZWxhdGlvbl9vcGVuKHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2sp OwogCi0JLyogaW5kZXhfb3BlbigpIGNoZWNrcyB0aGF0IGl0J3MgYW4gaW5kZXggKi8KLQlp ZiAoIUlTX0hBU0gocmVsKSkKKwlpZiAoIUlTX0lOREVYKHJlbCkgfHwgIUlTX0hBU0gocmVs KSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVD VF9UWVBFKSwKIAkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgaGFzaCBp bmRleCIsCmRpZmYgLS1naXQgYS9jb250cmliL3Bnc3RhdHR1cGxlL3NxbC9wZ3N0YXR0dXBs ZS5zcWwgYi9jb250cmliL3Bnc3RhdHR1cGxlL3NxbC9wZ3N0YXR0dXBsZS5zcWwKaW5kZXgg NTExMWJlMGU2Mi4uYjA4YzMxYzIxYiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBs ZS9zcWwvcGdzdGF0dHVwbGUuc3FsCisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvc3FsL3Bn c3RhdHR1cGxlLnNxbApAQCAtNjUsNiArNjUsNyBAQCBzZWxlY3QgcGdzdGF0Z2luaW5kZXgo J3Rlc3RfaGFzaGlkeCcpOwogLS0gY2hlY2sgdGhhdCB1c2luZyBhbnkgb2YgdGhlc2UgZnVu Y3Rpb25zIHdpdGggdW5zdXBwb3J0ZWQgcmVsYXRpb25zIHdpbGwgZmFpbAogY3JlYXRlIHRh YmxlIHRlc3RfcGFydGl0aW9uZWQgKGEgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEpOwog Y3JlYXRlIGluZGV4IHRlc3RfcGFydGl0aW9uZWRfaW5kZXggb24gdGVzdF9wYXJ0aXRpb25l ZChhKTsKK2NyZWF0ZSBpbmRleCB0ZXN0X3BhcnRpdGlvbmVkX2hhc2hfaW5kZXggb24gdGVz dF9wYXJ0aXRpb25lZCB1c2luZyBoYXNoKGEpOwogLS0gdGhlc2Ugc2hvdWxkIGFsbCBmYWls CiBzZWxlY3QgcGdzdGF0dHVwbGUoJ3Rlc3RfcGFydGl0aW9uZWQnKTsKIHNlbGVjdCBwZ3N0 YXR0dXBsZSgndGVzdF9wYXJ0aXRpb25lZF9pbmRleCcpOwpAQCAtNzMsNiArNzQsNyBAQCBz ZWxlY3QgcGdfcmVscGFnZXMoJ3Rlc3RfcGFydGl0aW9uZWQnKTsKIHNlbGVjdCBwZ3N0YXRp bmRleCgndGVzdF9wYXJ0aXRpb25lZCcpOwogc2VsZWN0IHBnc3RhdGdpbmluZGV4KCd0ZXN0 X3BhcnRpdGlvbmVkJyk7CiBzZWxlY3QgcGdzdGF0aGFzaGluZGV4KCd0ZXN0X3BhcnRpdGlv bmVkJyk7CitzZWxlY3QgcGdzdGF0aGFzaGluZGV4KCd0ZXN0X3BhcnRpdGlvbmVkX2hhc2hf aW5kZXgnKTsKIAogY3JlYXRlIHZpZXcgdGVzdF92aWV3IGFzIHNlbGVjdCAxOwogLS0gdGhl c2Ugc2hvdWxkIGFsbCBmYWlsCg== --------------OaRwwGtya3OWQgfJ7ynLCbzW--