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 1vsjGm-00Go0A-1X for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Feb 2026 15:15:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vsjGl-00GTjd-2V for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Feb 2026 15:15:15 +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 1vsjGk-00GTjN-31 for pgsql-hackers@lists.postgresql.org; Wed, 18 Feb 2026 15:15:15 +0000 Received: from fout-a1-smtp.messagingengine.com ([103.168.172.144]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vsjGh-00000001EW0-3m3l for pgsql-hackers@postgresql.org; Wed, 18 Feb 2026 15:15:14 +0000 Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfout.phl.internal (Postfix) with ESMTP id 5E6D9EC061A for ; Wed, 18 Feb 2026 10:15:11 -0500 (EST) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-03.internal (MEProxy); Wed, 18 Feb 2026 10:15:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:subject:subject:to:to; s=fm2; t=1771427711; x=1771514111; bh=Mk6FO1Fg9aImhYnli0jpVJL8yREt3oh8 52DK/seTy6I=; b=CglUemTR5OVtddffnDaMrqGEjt4LVTpk/ayxNQOOMxEGVWEu LHiiC1qU5Vgk1OFrTk3fQprv1UE9gTVOs0ZmJOpoqe4ZZgyrFrkyoJc0iVmf+zJU 3gLza526ZJ2/gGcyjfC4RD9efINUobK/YfdsLvdqmSTObB4bwLxbJXNHH//N16/g CRUhVZmDYiYN1qXz0xrWQJ7fTTqD0AX9Zmz3gO1F61+2gfnyJOUPt/hjVrqafoAj ZPg5lx2Y9hQTjgRFq3wJBpYWNg+ZQBGdg7LAfQYszSUJ2pNHi5Xsy2fyc1/cwtvb 3zr90A42zFRAxDAHu6BoKcObl15QW+bnTGa5zA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1771427711; x= 1771514111; bh=Mk6FO1Fg9aImhYnli0jpVJL8yREt3oh852DK/seTy6I=; b=M YPyYhsR0DeQd6oWvWTdygMhSW2qwjjwoHTZt01p+YKc6J9o9AiCUzVMWOyykqWfJ BgwopyYAdSfmhXunzh7NVKpbPkI0lg3l0P9kxPA1jpQ1HvDNEP4L7fL+xzzV0Q58 C2u75t0u/j9IlwPBo3wv/LMG1YyWHQc/EtcAQXsIVPx4rXdaMXqeV0NyX6c6Dqhe rhskiZmy615aOGwDjb7nsu/DydDLExwssIxW5S6NeO2GcJjuKjiVw+BtA5AC/Fuc prgJHm8r5SAZT6rIIKWCRyhocc+TM3jUxERFwBP2FIRGeRMo7mlKfvMS2U3Dh5kw pubWE1sWGtlAA5mtByB4A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvvddvleejucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfhffuvfesmhdtreertddvje enucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhesvghishgv nhhtrhgruhhtrdhorhhgqeenucggtffrrghtthgvrhhnpeehteekudegtdehtedttefhud ekjefgudeiheeiteffuedtteffkeekgfelvdffleenucevlhhushhtvghrufhiiigvpedt necurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrsegvihhsvghnthhrrghuthdroh hrghdpnhgspghrtghpthhtohepuddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohep phhgshhqlhdqhhgrtghkvghrshesphhoshhtghhrvghsqhhlrdhorhhg X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 18 Feb 2026 10:15:10 -0500 (EST) Content-Type: multipart/mixed; boundary="------------Vn7qwPOXdad1hoNmtmCbcxQm" Message-ID: <6d3fef19-a420-4e11-8235-8ea534bf2080@eisentraut.org> Date: Wed, 18 Feb 2026 16:15:09 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Peter Eisentraut Subject: some validate_relation_kind() tidying 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. --------------Vn7qwPOXdad1hoNmtmCbcxQm Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit We have three different functions called validate_relation_kind(), namely in src/backend/access/index/indexam.c src/backend/access/sequence/sequence.c src/backend/access/table/table.c These all check which relkinds are permitted by index_open(), sequence_open(), and table_open(), respectively, which are each wrappers around relation_open() (which accepts any relkind). I always found the one in table.c a little too mysterious, because it just checks which relkinds it does *not* want, and so if you want to know whether a particular relkind is suitable for table_open(), you need to do additional research and check what all the possible relkinds are and so on, and there is no real explanation why those choices were made. I think it would be clearer and more robust and also more consistent with the other ones if we flipped that around and listed the ones that are acceptable and why. Secondly, the sequence.c one was probably copied from the table.c one, but I think we can make the error message a bit more direct by just saying "... is not a sequence" instead of "cannot open relation". These are the two attached patches. This is just something I found while working on something else nearby. --------------Vn7qwPOXdad1hoNmtmCbcxQm Content-Type: text/plain; charset=UTF-8; name="0001-Change-error-message-for-sequence-validate_relation_.patch" Content-Disposition: attachment; filename*0="0001-Change-error-message-for-sequence-validate_relation_.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxMmU0ZWIyNzljZjY0YWMyMzEzMWM0MGFlMDQyMGY2YjdlMmRiMzNhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAxOCBGZWIgMjAyNiAxMTo0ODozNyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggMS8yXSBDaGFuZ2UgZXJyb3IgbWVzc2FnZSBmb3Igc2VxdWVuY2UKIHZhbGlk YXRlX3JlbGF0aW9uX2tpbmQoKQoKV2UgY2FuIGp1c3Qgc2F5ICIuLi4gaXMgbm90IGEgc2Vx dWVuY2UiIGluc3RlYWQgb2YgdGhlIG1vcmUKY29tcGxpY2F0ZWQgdmFyaWFudCBmcm9tIGJl Zm9yZSwgd2hpY2ggd2FzIHByb2JhYmx5IGNvcGllZCBmcm9tCnNyYy9iYWNrZW5kL2FjY2Vz cy90YWJsZS90YWJsZS5jLgoKRml4IGEgdHlwbyBpbiBhIGNvbW1lbnQgaW4gcGFzc2luZy4K LS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc2VxdWVuY2Uvc2VxdWVuY2UuYyB8IDcgKysrLS0t LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXF1ZW5jZS5vdXQgfCAzICstLQogMiBm aWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NlcXVlbmNlL3NlcXVlbmNlLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3Mvc2VxdWVuY2Uvc2VxdWVuY2UuYwppbmRleCAxMDZhZjE0NzdlOS4uNjg5 N2Y4NDMyZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zZXF1ZW5jZS9zZXF1 ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zZXF1ZW5jZS9zZXF1ZW5jZS5jCkBA IC02Myw3ICs2Myw3IEBAIHNlcXVlbmNlX2Nsb3NlKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NL TU9ERSBsb2NrbW9kZSkKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQl2YWxpZGF0ZV9yZWxh dGlvbl9raW5kIC0gY2hlY2sgdGhlIHJlbGF0aW9uJ3Mga2luZAogICoKLSAqCQlNYWtlIHN1 cmUgcmVsa2luZCBpcyBmcm9tIGEgc2VxdWVuY2UuCisgKgkJTWFrZSBzdXJlIHJlbGtpbmQg aXMgYSBzZXF1ZW5jZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0KICAqLwogc3RhdGljIGlubGlu ZSB2b2lkCkBAIC03Miw3ICs3Miw2IEBAIHZhbGlkYXRlX3JlbGF0aW9uX2tpbmQoUmVsYXRp b24gcikKIAlpZiAoci0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfU0VRVUVOQ0UpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQ RSksCi0JCQkJIGVycm1zZygiY2Fubm90IG9wZW4gcmVsYXRpb24gXCIlc1wiIiwKLQkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHIpKSwKLQkJCQkgZXJyZGV0YWlsX3JlbGtpbmRf bm90X3N1cHBvcnRlZChyLT5yZF9yZWwtPnJlbGtpbmQpKSk7CisJCQkJIGVycm1zZygiXCIl c1wiIGlzIG5vdCBhIHNlcXVlbmNlIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHIpKSkpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXF1 ZW5jZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlcXVlbmNlLm91dAppbmRl eCBjNDQ1NGU1YjQzNS4uYTA4ODNiMTEwMDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc2VxdWVuY2Uub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc2VxdWVuY2Uub3V0CkBAIC0zMTMsOCArMzEzLDcgQEAgQUxURVIgU0VRVUVOQ0UgSUYg RVhJU1RTIHNlcXVlbmNlX3Rlc3QyIFJFU1RBUlQgV0lUSCAyNAogICBJTkNSRU1FTlQgQlkg NCBNQVhWQUxVRSAzNiBNSU5WQUxVRSA1IENZQ0xFOwogTk9USUNFOiAgcmVsYXRpb24gInNl cXVlbmNlX3Rlc3QyIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcKIEFMVEVSIFNFUVVFTkNF IHNlcmlhbFRlc3QxIENZQ0xFOyAgLS0gZXJyb3IsIG5vdCBhIHNlcXVlbmNlCi1FUlJPUjog IGNhbm5vdCBvcGVuIHJlbGF0aW9uICJzZXJpYWx0ZXN0MSIKLURFVEFJTDogIFRoaXMgb3Bl cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KK0VSUk9SOiAgInNlcmlhbHRl c3QxIiBpcyBub3QgYSBzZXF1ZW5jZQogQ1JFQVRFIFNFUVVFTkNFIHNlcXVlbmNlX3Rlc3Qy IFNUQVJUIFdJVEggMzI7CiBDUkVBVEUgU0VRVUVOQ0Ugc2VxdWVuY2VfdGVzdDQgSU5DUkVN RU5UIEJZIC0xOwogU0VMRUNUIG5leHR2YWwoJ3NlcXVlbmNlX3Rlc3QyJyk7Ci0tIAoyLjUz LjAKCg== --------------Vn7qwPOXdad1hoNmtmCbcxQm Content-Type: text/plain; charset=UTF-8; name="0002-Flip-logic-in-table-validate_relation_kind.patch" Content-Disposition: attachment; filename="0002-Flip-logic-in-table-validate_relation_kind.patch" Content-Transfer-Encoding: base64 RnJvbSAyY2QyYmYzMWQ1YWRiNmZjZGJiNDUyODAxOGRlNzAwMDk0MDc1OTM2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAxOCBGZWIgMjAyNiAxNDozMjo0NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggMi8yXSBGbGlwIGxvZ2ljIGluIHRhYmxlIHZhbGlkYXRlX3JlbGF0aW9uX2tp bmQKCkl0IGluc3RlYWQgb2YgY2hlY2tpbmcgd2hpY2ggcmVsa2luZHMgaXQgc2hvdWxkbid0 IGJlLCBleHBsaWNpdGx5IGxpc3QKdGhlIG9uZXMgd2UgYWNjZXB0LiAgVGhpcyBpcyB1c2Vk IHRvIGNoZWNrIHdoaWNoIHJlbGtpbmRzIGFyZSBhY2NlcHRlZAppbiB0YWJsZV9vcGVuKCkg YW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiAgQmVmb3JlIHRoaXMgY2hhbmdlLCBmaWd1cmluZwp0 aGF0IG91dCB3YXMgYWx3YXlzIGEgZmV3IHN0ZXBzIHRvbyBjb21wbGljYXRlZC4gIFRoaXMg YWxzbyBtYWtlcwpjaGFuZ2VzIGZvciBuZXcgcmVsa2luZHMgbW9yZSBleHBsaWNpdCBpbnN0 ZWFkIG9mIGFjY2lkZW50YWwuCkZpbmFsbHksIHRoaXMgbWFrZXMgdGhpcyBtb3JlIGFsaWdu ZWQgd2l0aCB0aGUgZnVuY3Rpb25zIG9mIHRoZSBzYW1lCm5hbWUgaW4gc3JjL2JhY2tlbmQv YWNjZXNzL2luZGV4L2luZGV4YW0uYyBhbmQKc3JjL2JhY2tlbmQvYWNjZXNzL3NlcXVlbmNl L3NlcXVlbmNlLmMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlLmMgfCAx MyArKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJs ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlLmMKaW5kZXggZmUzMzBhZTg2 MmEuLmVmMzNkNzVkNmZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUv dGFibGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGUuYwpAQCAtMTMx LDE1ICsxMzEsMjAgQEAgdGFibGVfY2xvc2UoUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RF IGxvY2ttb2RlKQogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJCXZhbGlkYXRlX3JlbGF0aW9u X2tpbmQgLSBjaGVjayB0aGUgcmVsYXRpb24ncyBraW5kCiAgKgotICoJCU1ha2Ugc3VyZSBy ZWxraW5kIGlzIG5vdCBpbmRleCBvciBjb21wb3NpdGUgdHlwZQorICoJCU1ha2Ugc3VyZSBy ZWxraW5kIGlzIHRhYmxlLWxpa2UuICBJbiBwYXJ0aWN1bGFyLCB0aGlzIGV4Y2x1ZGVzIGlu ZGV4ZXMKKyAqCQlhbmQgY29tcG9zaXRlIHR5cGVzLCB3aGljaCBjYW5ub3QgYmUgcmVhZCBm cm9tIGluIGEgcXVlcnkuCiAgKiAtLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHN0YXRpYyBpbmxp bmUgdm9pZAogdmFsaWRhdGVfcmVsYXRpb25fa2luZChSZWxhdGlvbiByKQogewotCWlmIChy LT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9JTkRFWCB8fAotCQlyLT5yZF9yZWwtPnJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCB8fAotCQlyLT5yZF9yZWwtPnJl bGtpbmQgPT0gUkVMS0lORF9DT01QT1NJVEVfVFlQRSkKKwlpZiAoci0+cmRfcmVsLT5yZWxr aW5kICE9IFJFTEtJTkRfUkVMQVRJT04gfHwKKwkJci0+cmRfcmVsLT5yZWxraW5kICE9IFJF TEtJTkRfU0VRVUVOQ0UgfHwKKwkJci0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfVE9B U1RWQUxVRSB8fAorCQlyLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WSUVXIHx8CisJ CXItPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX01BVFZJRVcgfHwKKwkJci0+cmRfcmVs LT5yZWxraW5kICE9IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSB8fAorCQlyLT5yZF9yZWwtPnJl bGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQkgZXJybXNn KCJjYW5ub3Qgb3BlbiByZWxhdGlvbiBcIiVzXCIiLAotLSAKMi41My4wCgo= --------------Vn7qwPOXdad1hoNmtmCbcxQm--