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 1wPmYz-0011XG-0Y for pgsql-hackers@arkaria.postgresql.org; Wed, 20 May 2026 19:26:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wPmXv-008IVC-2q for pgsql-hackers@arkaria.postgresql.org; Wed, 20 May 2026 19:25:36 +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 1wPmXv-008IV3-1U for pgsql-hackers@lists.postgresql.org; Wed, 20 May 2026 19:25:36 +0000 Received: from smtp.outgoing.loopia.se ([93.188.3.37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wPmXu-00000000b6J-131r for pgsql-hackers@lists.postgresql.org; Wed, 20 May 2026 19:25:35 +0000 Received: from s807.loopia.se (localhost [127.0.0.1]) by s807.loopia.se (Postfix) with ESMTP id C9A465FE4EE for ; Wed, 20 May 2026 21:25:32 +0200 (CEST) Received: from s981.loopia.se (unknown [172.22.191.6]) by s807.loopia.se (Postfix) with ESMTP id AFFCB5FF1B8 for ; Wed, 20 May 2026 21:25:32 +0200 (CEST) Received: from localhost (unknown [172.22.191.6]) by s981.loopia.se (Postfix) with ESMTP id ACC2422B1740 for ; Wed, 20 May 2026 21:25:32 +0200 (CEST) X-Virus-Scanned: amavis at amavis.loopia.se X-Spam-Flag: NO X-Spam-Score: -1.2 X-Spam-Level: X-Spam-Status: No, score=-1.2 tagged_above=-999 required=6.2 tests=[ALL_TRUSTED=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1] autolearn=disabled Authentication-Results: s472.loopia.se (amavis); dkim=pass (2048-bit key) header.d=proxel.se Received: from s934.loopia.se ([172.22.191.6]) by localhost (s472.loopia.se [172.22.190.12]) (amavis, port 10024) with LMTP id nGVn-3Dc1tcW for ; Wed, 20 May 2026 21:25:32 +0200 (CEST) X-Loopia-Auth: user X-Loopia-User: andreas@proxel.se X-Loopia-Originating-IP: 147.28.75.140 Received: from [192.168.0.121] (customer-147-28-75-140.stosn.net [147.28.75.140]) (Authenticated sender: andreas@proxel.se) by s934.loopia.se (Postfix) with ESMTPSA id 02BE2917F04 for ; Wed, 20 May 2026 21:25:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proxel.se; s=loopiadkim1707418970; t=1779305132; bh=cDHvP7ffxTb66nsK/6oosTs5UfrDzPls4THIhwfHVuo=; h=Date:From:To:Subject; b=P03ARnwupcKivoG4KVyLtU7pYvIluSrk0JuJZVc7Ymr7WIRvTLImahkeUIbFy73jD AIVo0SJQWXqjGK681rLJXRJNYo0jn4RtJi+1vz0tKP2Pb2/F9l6VQkLUcTH5XUKiJS ghXRxiwHUyRWd8kA4LiBGA78KUL7BG7njUr3n//yXTmgc37oPlCcZZPdWsW60ivbEJ edYmiQskirnuOuqMUloodqhdOEfSfqgf+CR+T79VX84OooCVqrZdjZcf0MfCiVJ2vi 4Z268lne5SSpqoJAuMQEEvF9aHxC4RJnhpBjLQ/vGdx2mCvlK3fqLPtLQwOYxCpLSZ v13ZI/lDkCeew== Content-Type: multipart/mixed; boundary="------------lN82zA4k5llsuebxud3DKoPV" Message-ID: Date: Wed, 20 May 2026 21:25:31 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Andreas Karlsson To: PostgreSQL Hackers Subject: Prevent setting NO INHERIT on partitioned not-null constraints 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. --------------lN82zA4k5llsuebxud3DKoPV Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! Me and Joel found a bug when working on another patch. We noticed that you cannot create not-null constraints with NO INHEIRT set on partitioned tables, but you can actually set it later by using ALTER CONSTRAINT. This must be an oversight so I have attached a patch which adds a check to prevent this. The SQL below should give an error but does not: CREATE TABLE t ( a int, CONSTRAINT a_is_not_null NOT NULL a ) PARTITION BY LIST (a); ALTER TABLE t ALTER CONSTRAINT a_is_not_null NO INHERIT; -- Andreas Karlsson Percona --------------lN82zA4k5llsuebxud3DKoPV Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Prevent-setting-NO-INHERIT-on-paritioned-not-null.patch" Content-Disposition: attachment; filename*0="v1-0001-Prevent-setting-NO-INHERIT-on-paritioned-not-null.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3NjE4NzMwYzhlYjEzOGU0OTE5NTk3MGJmZmJjYTg1ZTU1ZjUwMTY5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIEthcmxzc29uIDxhbmRyZWFzQHByb3hl bC5zZT4KRGF0ZTogV2VkLCAyMCBNYXkgMjAyNiAyMTowMDo0MSArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjFdIFByZXZlbnQgc2V0dGluZyBOTyBJTkhFUklUIG9uIHBhcml0aW9uZWQgbm90 LW51bGwKIGNvbnN0cmFpbnRzCgpUaGVyZSBpcyBhIGNoZWNrIHdoaWNoIHByZXZlbnRzIE5P VCBOVUxMIGNvbnRyYWludHMgZnJvbSBiZWluZyBjcmVhdGVkCndpdGggTk8gSU5IRUlSVCBv biBwYXJ0aXRpb25lZCB0YWJsZXMgYnV0IHRoZSBzYW1lIGNoZWNrIGFnYWluc3QgaXQgaXMK bWlzc2luZyBmb3IgQUxURVIgVEFCTEUgLi4uIEFMVEVSIENPTlNUUkFJTlQgd2hpY2ggY2xl YXJseSBpcyBhbgpvdmVyc2lnaHQuIFNvIHRoaXMgY29tbWl0IGp1c3QgYWRkcyB0aGUgbWlz c2luZyBjaGVjay4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAg ICAgICB8IDYgKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRz Lm91dCB8IDQgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29uc3RyYWludHMuc3FsICAg ICAgfCAzICsrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA5MmIwZjM4YzM1My4uZWRiZjI1M2Y3MjIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xMjM2Nyw2ICsxMjM2NywxMiBAQCBB VEV4ZWNBbHRlckNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBVEFs dGVyQ29uc3RyYWludCAqY21kY29uLAogCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpF Q1RfVFlQRSksCiAJCQkJZXJybXNnKCJjb25zdHJhaW50IFwiJXNcIiBvZiByZWxhdGlvbiBc IiVzXCIgaXMgbm90IGEgbm90LW51bGwgY29uc3RyYWludCIsCiAJCQkJCSAgIGNtZGNvbi0+ Y29ubmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpOworCWlmIChjbWRjb24t PmFsdGVySW5oZXJpdGFiaWxpdHkgJiYKKwkJY21kY29uLT5ub2luaGVyaXQgJiYgcmVsLT5y ZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJ CWVycm1zZygibm90LW51bGwgY29uc3RyYWludCBcIiVzXCIgb24gcGFydGl0aW9uZWQgdGFi bGUgXCIlc1wiIGNhbm5vdCBiZSBOTyBJTkhFUklUIiwKKwkJCQkJICAgY21kY29uLT5jb25u YW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSk7CiAKIAkvKiBSZWZ1c2UgdG8g bW9kaWZ5IGluaGVyaXRhYmlsaXR5IG9mIGluaGVyaXRlZCBjb25zdHJhaW50cyAqLwogCWlm IChjbWRjb24tPmFsdGVySW5oZXJpdGFiaWxpdHkgJiYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb25zdHJhaW50cy5vdXQKaW5kZXggNzI4ZWYyZmQxN2UuLmU1NGZlYzdmYjU3 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dApAQCAt MTEzMCw2ICsxMTMwLDEwIEBAIENSRUFURSBUQUJMRSBBVEFDQzEgKGEgaW50IE5PVCBOVUxM IE5PIElOSEVSSVQpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKIEVSUk9SOiAgbm90LW51bGwg Y29uc3RyYWludHMgb24gcGFydGl0aW9uZWQgdGFibGVzIGNhbm5vdCBiZSBOTyBJTkhFUklU CiBDUkVBVEUgVEFCTEUgQVRBQ0MxIChhIGludCwgTk9UIE5VTEwgYSBOTyBJTkhFUklUKSBQ QVJUSVRJT04gQlkgTElTVCAoYSk7CiBFUlJPUjogIG5vdC1udWxsIGNvbnN0cmFpbnRzIG9u IHBhcnRpdGlvbmVkIHRhYmxlcyBjYW5ub3QgYmUgTk8gSU5IRVJJVAorQ1JFQVRFIFRBQkxF IEFUQUNDMSAoYSBpbnQsIENPTlNUUkFJTlQgYV9pc19ub3RfbnVsbCBOT1QgTlVMTCBhKSBQ QVJUSVRJT04gQlkgTElTVCAoYSk7CitBTFRFUiBUQUJMRSBBVEFDQzEgQUxURVIgQ09OU1RS QUlOVCBhX2lzX25vdF9udWxsIE5PIElOSEVSSVQ7CitFUlJPUjogIG5vdC1udWxsIGNvbnN0 cmFpbnQgImFfaXNfbm90X251bGwiIG9uIHBhcnRpdGlvbmVkIHRhYmxlICJhdGFjYzEiIGNh bm5vdCBiZSBOTyBJTkhFUklUCitEUk9QIFRBQkxFIEFUQUNDMTsKIC0tIGl0J3Mgbm90IHBv c3NpYmxlIHRvIG92ZXJyaWRlIGEgbm8taW5oZXJpdCBjb25zdHJhaW50IHdpdGggYW4gaW5o ZXJpdGFibGUgb25lCiBDUkVBVEUgVEFCTEUgQVRBQ0MyIChhIGludCwgQ09OU1RSQUlOVCBh X2lzX25vdF9udWxsIE5PVCBOVUxMIGEgTk8gSU5IRVJJVCk7CiBDUkVBVEUgVEFCTEUgQVRB Q0MxIChhIGludCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJh aW50cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwKaW5kZXgg NDgzYzFlOTgzNzIuLmRjMTMzYjEyNGJiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jb25zdHJhaW50cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29uc3Ry YWludHMuc3FsCkBAIC03NTcsNiArNzU3LDkgQEAgRFJPUCBUQUJMRSBBVEFDQzEsIEFUQUND MiwgQVRBQ0MzOwogLS0gTk9UIE5VTEwgTk8gSU5IRVJJVCBpcyBub3QgcG9zc2libGUgb24g cGFydGl0aW9uZWQgdGFibGVzCiBDUkVBVEUgVEFCTEUgQVRBQ0MxIChhIGludCBOT1QgTlVM TCBOTyBJTkhFUklUKSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CiBDUkVBVEUgVEFCTEUgQVRB Q0MxIChhIGludCwgTk9UIE5VTEwgYSBOTyBJTkhFUklUKSBQQVJUSVRJT04gQlkgTElTVCAo YSk7CitDUkVBVEUgVEFCTEUgQVRBQ0MxIChhIGludCwgQ09OU1RSQUlOVCBhX2lzX25vdF9u dWxsIE5PVCBOVUxMIGEpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKK0FMVEVSIFRBQkxFIEFU QUNDMSBBTFRFUiBDT05TVFJBSU5UIGFfaXNfbm90X251bGwgTk8gSU5IRVJJVDsKK0RST1Ag VEFCTEUgQVRBQ0MxOwogCiAtLSBpdCdzIG5vdCBwb3NzaWJsZSB0byBvdmVycmlkZSBhIG5v LWluaGVyaXQgY29uc3RyYWludCB3aXRoIGFuIGluaGVyaXRhYmxlIG9uZQogQ1JFQVRFIFRB QkxFIEFUQUNDMiAoYSBpbnQsIENPTlNUUkFJTlQgYV9pc19ub3RfbnVsbCBOT1QgTlVMTCBh IE5PIElOSEVSSVQpOwotLSAKMi40Ny4zCgo= --------------lN82zA4k5llsuebxud3DKoPV--