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 1wZgwq-001DjL-2d for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jun 2026 03:28: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 1wZgwn-0040sY-1r for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jun 2026 03:28:13 +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 1wZgwn-0040sP-0l for pgsql-hackers@lists.postgresql.org; Wed, 17 Jun 2026 03:28:13 +0000 Received: from mail-ua1-x92d.google.com ([2607:f8b0:4864:20::92d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wZgwk-00000000qDO-3eV6 for pgsql-hackers@lists.postgresql.org; Wed, 17 Jun 2026 03:28:12 +0000 Received: by mail-ua1-x92d.google.com with SMTP id a1e0cc1a2514c-966d4da9fa6so40897241.0 for ; Tue, 16 Jun 2026 20:28:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781666888; cv=none; d=google.com; s=arc-20240605; b=TNB3sBXZq42cVfrq7jJzNJJb38r2h4+8MAL7u98R0Xy9wx/f3HX6LyRmRdCdIqWnUi dnmtQoXT32mA4K+qAPsCmsh4hCX4df2SxHM8wNiqcpDRXvWfmiwks7WrGuPN4zRO2tuf AlWxMyTB4sVM3cw96dcVS8kqAZqPTm86W4om90MUmwHAul9m6spnk6iZHH7zrGLfuz88 En70cGJ3As0hLvid8tklIeMtUyR/gfPptzTP9MqkhAJhOjpsDUc0VAx/jKkcpIpMR0VQ HzjLAvnMb9Br1mIiZtPR7bRbJNzDkcBPykJYo6RxantEPMII3VX970GeqWoBEQJsptfx SUpQ== 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=5NDPQmbNbukoEcktYQvVMFSfs05Q0gXQKnDTaRgsooA=; fh=Mk8n05fjKryqgFnS3K22YZIhZddbMRhwMTyZ1D9ADPc=; b=j0XossyNg/EUUseAnWOWwbI0vgCimdtV+PrjbO2lLodz5+u0Tq4AKf41eGdVo553ij edzAOuOys/ksgTJhWfUtjjXCCngiXkhrupoDHSEXHxpaLbj0H8efwyiW9UO6+l2j8I1Z hBzFQ/OrtBJmHYE7aIxWmFgOzoIzRI3EX/TilBb/vL/aJgzpaIe95EA/5vlRgHmtZZUd z2a3yF/xWSE6wlCcA6BCdGhxoGdvCNgEyT3J4Cv9i140mrUszp6h8ecZ4jYk2FjZ4aY8 x2vvtut/NArdHXx3vLeOeLbX3zP7YYTsavUWAzeqcdBOWfUmTTrY8vCIGPpSyK0nkRk3 BvtQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781666888; x=1782271688; darn=lists.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=5NDPQmbNbukoEcktYQvVMFSfs05Q0gXQKnDTaRgsooA=; b=UCo5k3rox74TggaChlFEFuEz1JDqugKwzhPgQrNZOjJGFiouNRI3VJihwslzuzmQ7U gA1X9shD2aCMO3ZOZ8U4GiT5VXnsmojX3qElyHYJTbofnpM9ywrWJktR3pl6NBKRH41x 3Hxi8jvCV+kjSXZWQRMhGS1hWmfbIX8YAgIVZYZJLmrNfoFuxolHh2WfV/T9m1IZUX0X X3FhfCsd2n0aU0BAfvNSyiutn3bPhSrwoxIaWAL998+gepoFUQx5RuhkVE+EBmXtoKqH Ie5MhiePBoJf4no3JRJcG8hWQ1MF31Oz9fD9TgvRHHso75SA2kuyLFuwWC22tBZ0wLLD FZRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781666888; x=1782271688; 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=5NDPQmbNbukoEcktYQvVMFSfs05Q0gXQKnDTaRgsooA=; b=G2Fd9A++HJL1fgRfIYfF7U13hicYKzXeWlmwLxVwbMGIQmKO9ayhgaw3LInToQCU9g XAW1OJyFyCIND3w4clDbjCKoZhqjZaPeWHFMCNpSGlHxyWTX+JhTFCueFBOQ7qUC1fDi zgeoYymVYzB6rnHO80FtePgAIo6C/28+dQV6kYmRgFpJXAsCGEWSXrB/yflw52v7B/GJ G+8PcxI1s9q3tdp0ODIjOSYAvV55oaHfr16eMaeTP8VnJzoWAPXXe/T+GQozLKW5Pbw4 ajMxvtWhqvZGYUUtplCZCRSypoU2+dQ9UwjaLd0Ud3hr74XLTgLCeK1tYyyXisGmmmt6 EV5g== X-Forwarded-Encrypted: i=1; AFNElJ/I3cVosWkvOIbh8iqHczMK2cAG6mPuo0/45F3jXSOLvuBo0IKUnchEHpWVgICM104iRBWlUH78tPPN2oNu@lists.postgresql.org X-Gm-Message-State: AOJu0YzWUH1t/1g0zFPPqsMm51gqn5yrOvmmcfcgLQ6ENv3dtXhSG9aq ic7lpb7q4co89jgFkVxllvwAM2Tj9CKtapKaJo9BJsBdBbT9hY+bNliYrk9WtcF3jSTKvTRpkZt Ta2IOdKK6NlCzJUFxdujgqXJcK9vS+Ac= X-Gm-Gg: Acq92OGi4/eDrTzrO1gOHURz7M5K6NShnjSydkK2pzXKSDC9s/fmQFJ8mg0Cwrc1V2p ylndITOrEluM5JeJ4VRmAtsxWxVXHwqPSGzZDrqUILe5xX3iZvILwjURLA+zewlAh8X80hSI6Md 7djf9Mxth7BOtOKJ7M6/apqXXEzmnvA+ojoQtxVqusBBpyFhcTbYLrYOLC/UFsk910+w7eHYGtt RkZM6kf6U3D2uRz7pRY+UVD6jZHmNpkdlVHg3opaF1fjkwM+NCKvPDkKMNiggv38k97jmZ1erB7 /PtGq3FgblRKm0T8VipZgT8tAwx5dRquc1LpDjduqGddKf/W3J4HxCRLSfjB9EHZAy3QypR392D IgygVYreJpAq6tDSro22hYEMKBfH8Q+/al3sDlZpSJsKBs1QHsnin5QCVYJIdlW3/JAABujKueG xvNoaGaPxYcisT9f7evP0n+CeIeQ== X-Received: by 2002:a05:6102:5121:b0:6de:3c29:373b with SMTP id ada2fe7eead31-7246c9ad604mr998858137.15.1781666887560; Tue, 16 Jun 2026 20:28:07 -0700 (PDT) MIME-Version: 1.0 References: <240CAFC9-8053-4660-A1D5-0CB2610AB257@gmail.com> In-Reply-To: <240CAFC9-8053-4660-A1D5-0CB2610AB257@gmail.com> From: jian he Date: Wed, 17 Jun 2026 11:27:31 +0800 X-Gm-Features: AVVi8Cc6OPMj23mpLNd_O7fOwOtRa4CFS8WyxbJ_c6FZaSj0wPP-6MgweKqQa0U Message-ID: Subject: Re: Fix bug of CHECK constraint enforceability recursion To: Chao Li Cc: =?UTF-8?Q?=C3=81lvaro_Herrera?= , Zsolt Parragi , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000f117db06546aa501" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f117db06546aa501 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jun 9, 2026 at 8:32=E2=80=AFAM Chao Li wro= te: > > In v10, I split the =E2=80=9Cbecause=E2=80=9D part to a errdetail, also m= oved out NOT ENFORCED out of the translate message. > ATCheckCheckConstrHasEnforcedParent `````` if (constraints_equivalent(parenttup, contuple, RelationGetDescr(conrel))) { `````` The above IF condition is basically always true (see MergeConstraintsIntoExisting), unless an inherited check constraint has a different definition, which should not happen. So I did a quick refactor here, which also drops the nesting level down by = one. Other than that, v10 looks good to me. -- jian https://www.enterprisedb.com/ --000000000000f117db06546aa501 Content-Type: application/octet-stream; name="v10-0001-misc-refactor-ATCheckCheckConstrHasEnforcedParent.nocfbot" Content-Disposition: attachment; filename="v10-0001-misc-refactor-ATCheckCheckConstrHasEnforcedParent.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqhif5gq0 RnJvbSA3N2ZhMzA1OWU2ZDZmZTU1MGQ1N2VmMDY3ZDBmZDc1MjczMTcxMDI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMTcgSnVuIDIwMjYgMTE6MjI6MzcgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx MCAxLzFdIG1pc2MgcmVmYWN0b3IgQVRDaGVja0NoZWNrQ29uc3RySGFzRW5mb3JjZWRQYXJlbnQK Ci0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgfCA2NCArKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDMx IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggOTFiMTYzZTVmOWMu LjU5OWY3N2E3NzIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTI5NTcsNDEgKzEy OTU3LDQzIEBAIEFUQ2hlY2tDaGVja0NvbnN0ckhhc0VuZm9yY2VkUGFyZW50KFJlbGF0aW9uIGNv bnJlbCwgUmVsYXRpb24gcmVsLAogCQkJCSFwYXJlbnRjb24tPmNvbmVuZm9yY2VkKQogCQkJCWNv bnRpbnVlOwogCi0JCQlpZiAoY29uc3RyYWludHNfZXF1aXZhbGVudChwYXJlbnR0dXAsIGNvbnR1 cGxlLAotCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihjb25yZWwpKSkKKwkJCWlmICghY29u c3RyYWludHNfZXF1aXZhbGVudChwYXJlbnR0dXAsIGNvbnR1cGxlLAorCQkJCQkJCQkJCVJlbGF0 aW9uR2V0RGVzY3IoY29ucmVsKSkpCisJCQkJZWxvZyhFUlJPUiwgImNoaWxkIHRhYmxlIFwiJXNc IiBoYXMgZGlmZmVyZW50IGRlZmluaXRpb24gZm9yIGNoZWNrIGNvbnN0cmFpbnQgXCIlc1wiIiwK KwkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCSBOYW1lU3RyKHBhcmVu dGNvbi0+Y29ubmFtZSkpOworCisJCQkvKgorCQkJICogQSBwYXJlbnQgbGlzdGVkIGluIGNoYW5n aW5nX2NvbmlkcyBpcyBiZWluZyBjaGFuZ2VkIGJ5IHRoZSBzYW1lCisJCQkgKiBBTFRFUiwgYnV0 IGl0IG1heSBub3QgaGF2ZSBiZWVuIHVwZGF0ZWQgeWV0LiAgRm9yIHJlZ3VsYXIKKwkJCSAqIGlu aGVyaXRhbmNlLCByZWN1cnNlIHVwd2FyZCB0byBjaGVjayB3aGV0aGVyIGFuIGVxdWl2YWxlbnQK KwkJCSAqIGVuZm9yY2VkIHBhcmVudCBvdXRzaWRlIHRoZSBBTFRFUiB3aWxsIG1ha2UgaXQgcmVt YWluIGVuZm9yY2VkLgorCQkJICogUGFydGl0aW9ucyBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBwYXJl bnRzLCBzbyB0aGV5IGRvIG5vdCBuZWVkCisJCQkgKiB0aGlzIGNoZWNrLgorCQkJICovCisJCQlp ZiAoIXJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbiAmJgorCQkJCWxpc3RfbWVtYmVyX29pZChj aGFuZ2luZ19jb25pZHMsIHBhcmVudGNvbi0+b2lkKSkKIAkJCXsKLQkJCQkvKgotCQkJCSAqIEEg cGFyZW50IGxpc3RlZCBpbiBjaGFuZ2luZ19jb25pZHMgaXMgYmVpbmcgY2hhbmdlZCBieSB0aGUK LQkJCQkgKiBzYW1lIEFMVEVSLCBidXQgaXQgbWF5IG5vdCBoYXZlIGJlZW4gdXBkYXRlZCB5ZXQu ICBGb3IKLQkJCQkgKiByZWd1bGFyIGluaGVyaXRhbmNlLCByZWN1cnNlIHVwd2FyZCB0byBjaGVj ayB3aGV0aGVyIGFuCi0JCQkJICogZXF1aXZhbGVudCBlbmZvcmNlZCBwYXJlbnQgb3V0c2lkZSB0 aGUgQUxURVIgd2lsbCBtYWtlIGl0Ci0JCQkJICogcmVtYWluIGVuZm9yY2VkLiAgUGFydGl0aW9u cyBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBwYXJlbnRzLAotCQkJCSAqIHNvIHRoZXkgZG8gbm90IG5l ZWQgdGhpcyBjaGVjay4KLQkJCQkgKi8KLQkJCQlpZiAoIXJlbC0+cmRfcmVsLT5yZWxpc3BhcnRp dGlvbiAmJgotCQkJCQlsaXN0X21lbWJlcl9vaWQoY2hhbmdpbmdfY29uaWRzLCBwYXJlbnRjb24t Pm9pZCkpCi0JCQkJewotCQkJCQlPaWQJCQlwYXJlbnRfZW5mb3JjZWRfcGFyZW50b2lkID0gSW52 YWxpZE9pZDsKKwkJCQlPaWQJCQlwYXJlbnRfZW5mb3JjZWRfcGFyZW50b2lkID0gSW52YWxpZE9p ZDsKIAotCQkJCQlpZiAocGFyZW50cmVsID09IE5VTEwpCi0JCQkJCQlwYXJlbnRyZWwgPSB0YWJs ZV9vcGVuKHBhcmVudG9pZCwgTm9Mb2NrKTsKKwkJCQlpZiAocGFyZW50cmVsID09IE5VTEwpCisJ CQkJCXBhcmVudHJlbCA9IHRhYmxlX29wZW4ocGFyZW50b2lkLCBOb0xvY2spOwogCi0JCQkJCWlm ICghQVRDaGVja0NoZWNrQ29uc3RySGFzRW5mb3JjZWRQYXJlbnQoY29ucmVsLAotCQkJCQkJCQkJ CQkJCQkJIHBhcmVudHJlbCwKLQkJCQkJCQkJCQkJCQkJCSBwYXJlbnR0dXAsCi0JCQkJCQkJCQkJ CQkJCQkgY2hhbmdpbmdfY29uaWRzLAotCQkJCQkJCQkJCQkJCQkJICZwYXJlbnRfZW5mb3JjZWRf cGFyZW50b2lkKSkKLQkJCQkJCWNvbnRpbnVlOwotCQkJCX0KLQotCQkJCSplbmZvcmNlZF9wYXJl bnRvaWQgPSBwYXJlbnRvaWQ7Ci0JCQkJaWYgKHBhcmVudHJlbCAhPSBOVUxMKQotCQkJCQl0YWJs ZV9jbG9zZShwYXJlbnRyZWwsIE5vTG9jayk7Ci0JCQkJc3lzdGFibGVfZW5kc2Nhbihwc2Nhbik7 Ci0JCQkJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKLQkJCQl0YWJsZV9jbG9zZShpbmhyZWwsIEFj Y2Vzc1NoYXJlTG9jayk7Ci0JCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKCFBVENoZWNrQ2hlY2tD b25zdHJIYXNFbmZvcmNlZFBhcmVudChjb25yZWwsCisJCQkJCQkJCQkJCQkJCSBwYXJlbnRyZWws CisJCQkJCQkJCQkJCQkJCSBwYXJlbnR0dXAsCisJCQkJCQkJCQkJCQkJCSBjaGFuZ2luZ19jb25p ZHMsCisJCQkJCQkJCQkJCQkJCSAmcGFyZW50X2VuZm9yY2VkX3BhcmVudG9pZCkpCisJCQkJCWNv bnRpbnVlOwogCQkJfQorCisJCQkqZW5mb3JjZWRfcGFyZW50b2lkID0gcGFyZW50b2lkOworCQkJ aWYgKHBhcmVudHJlbCAhPSBOVUxMKQorCQkJCXRhYmxlX2Nsb3NlKHBhcmVudHJlbCwgTm9Mb2Nr KTsKKwkJCXN5c3RhYmxlX2VuZHNjYW4ocHNjYW4pOworCQkJc3lzdGFibGVfZW5kc2NhbihzY2Fu KTsKKwkJCXRhYmxlX2Nsb3NlKGluaHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCXJldHVybiB0 cnVlOwogCQl9CiAKIAkJaWYgKHBhcmVudHJlbCAhPSBOVUxMKQotLSAKMi4zNC4xCgo= --000000000000f117db06546aa501--