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 1wVDQG-001nBY-2N for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jun 2026 19:08:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wVDQF-008FtQ-0X for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jun 2026 19:08:07 +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 1wVDQE-008FtI-2h for pgsql-hackers@lists.postgresql.org; Thu, 04 Jun 2026 19:08:06 +0000 Received: from mail-yx1-xb12f.google.com ([2607:f8b0:4864:20::b12f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wVDQC-000000017OH-3xjb for pgsql-hackers@lists.postgresql.org; Thu, 04 Jun 2026 19:08:05 +0000 Received: by mail-yx1-xb12f.google.com with SMTP id 956f58d0204a3-66077e888b2so1347650d50.3 for ; Thu, 04 Jun 2026 12:08:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780600083; cv=none; d=google.com; s=arc-20240605; b=jJxm5o9VA43fNG+gFmxh+4v/9oXnFyqw5XjhdWu94fpMDI9RjBiOLj1PZ1j0pbTKq4 QR71gqp29gkQK4iE8Dd8q9XF5SMtN3NRLT/kmg3ZBgmgI9jLDgKmTMtx2YGX6qVxBM8G BqQIlXP2dOTRNbdpOOd0EUEQHArZpWwAtJgrHNleZe6RJhfoN+vnH0N3ojH97xvf+Pvg bLpStpfuKHM5UfvxKxBGiSSq+TAqiZiN1SILeZ4oySwkEig1cdOmAjZgG84Rb5qT1BJk ZG08z2hqAV7ie6gbl441ps2l+r8IdZHcuwc2/q0BPqCzU3zC5fOe7a7QtXoba0HoMupp X61g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:mime-version:references:in-reply-to:from :dkim-signature; bh=yniEakEJfvH5LBpZIr0+7AEMU3uqJAUUSi6Dvk1UWCw=; fh=nwNxTtLLPTU0ewfLM7SSbrjMajMl+wwnFkCY/fi90vE=; b=R1TliqYfxBVr6j1gdWzeuNEU1SJndieHxI1XXILv49Fozh7YYP6XcCV8CsD64e2RIe Zio7HgD/F3d2yJzq2+8xOwTlQ8iGLKIb1vSExJYYHF759fRVuziICNNnLlfxUXTCRu7y /pA2fMpFiiftWXVxoU2BRi4m2pvcYmggQtwOy0GvZWmijfUJU3FNsNxC8yZPNTWpPM6s c02bHdAXx4jL9z+5rGiL5wWJvsgBs8xlPqz7KsBiBXOPkdOp6Od3HcV4NICJa6cnb0QB 5uTjjgiEzSIQtltgXmWBlk5vMJqSOYYNtB0sUJKWEvhbnrKlTvsccHbORw3zGN19MJh7 WR9Q==; 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=percona.com; s=google; t=1780600083; x=1781204883; darn=lists.postgresql.org; h=to:subject:message-id:date:mime-version:references:in-reply-to:from :from:to:cc:subject:date:message-id:reply-to; bh=yniEakEJfvH5LBpZIr0+7AEMU3uqJAUUSi6Dvk1UWCw=; b=d6Mh8wt+KthwAG6NubUlXAwX6z7m0Vx8VC1PSHfY/uJcC4a+T2BfzqVJc4BH6NUt5S AkoTfY28IOcebylW9q1cT6XrbAy7+ZR9WFihoA7U82V9AaT7stPCtdk3In7r1D8rhfEc HalZHPfjXuPp3Mas/zKkl9/uiv1ycl+7YAYio= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780600083; x=1781204883; h=to:subject:message-id:date:mime-version:references:in-reply-to:from :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=yniEakEJfvH5LBpZIr0+7AEMU3uqJAUUSi6Dvk1UWCw=; b=jMba/3Cz3SwfxqLYnHz5ar0hWGqqBjJUtRbKDu/wLuIJoDsKVMyWixRupIWc0L+rci qNSx18JDJttFIxIZ0tjze/dvqSzDXfn5U4JHRMQU/MuW1G+kuw+q9Pnmw77xdaNGMwT9 4cPW3DvjX/jp3CPWCVRcrXIRh8AZ0vACszINCZnr5s+eI/jLEZiz0fjK17hdFiNtmX49 td/60hNsBLiVzhK7Q+QNReEt3onS/KLbuBPRI5AJVOkoDaVDEXoEVFgxFOAeOQqKoJht x1JUH671sim5fyBZEQB2HuMhao9eFETdnMEHfucwtDMhxYCP6Fn1+BOzbYmYIeXyI0n8 2ovw== X-Gm-Message-State: AOJu0YzFB1u+wbwAxkhMfIEl3fsrXiDTrXxu37H3k5qDgBxCbr5nMcx+ +1kSXdZDgoMHu7phK5MSuH8nczSBljmtHqmaJzEqY33/DLWBPkdIFCIk7vj84WMRgK/s3GFnksh /PYLiUSh9PBCGtM8+IrcrSxvoq37MdS0VGx5KITfrtt5ilwzTEd6Vd1ajEeghkwxmiJ7zsZv7qd An70jSOAUyMJKqrS686KKvpVsH0vBexJzjSvyfK7YyQvg8Zg3MaLHIvku4rqdpaHxsgbh9Hbi70 dYB5nSLr/vPlQp9NsmhVBULRCuDFCLwzFvDmDUh41vKrM6BJVTPZdCCybMN7o5sibqtRmfJuiar HA== X-Gm-Gg: Acq92OEXXfz35IjqqmnEmi3mpE8hKT6uB0nio8mgI6b35tui4ALaeLjvKyXagklmyi4 hZcmUL3eNLT1sha6j+COh74D4XMKoE9+StKfwCGPdQ/Fon+cGDazsSkM1KZ18DGxL6chpv3daNJ 8xAmBbPNSY7WwakePcIh6tajrlMwA0UL0edPE0TK3FwD1X/sPWOhNC7TDT0JBBluu5uejn2JTZi 5pYxTL4XMR+J5X8PeqHmKC5ggXcCRtMLY9yBsbCBVKrD3sIbWHTkr1kGhewOf0Wry1hoJi6vXRc YV11lu78x+fFFevaP9nn+GJ6mT7IraCl0TtjL7qlMVuC/x4mGxbxPwDJgh/XP5qO5NvRi1nTSTE 01PAHvqGx5SgZpA== X-Received: by 2002:a05:690e:4806:b0:652:5567:b3ec with SMTP id 956f58d0204a3-66106f42e06mr99786d50.37.1780600083255; Thu, 04 Jun 2026 12:08:03 -0700 (PDT) Received: from 298783833264 named unknown by gmailapi.google.com with HTTPREST; Thu, 4 Jun 2026 12:08:02 -0700 Received: from 298783833264 named unknown by gmailapi.google.com with HTTPREST; Thu, 4 Jun 2026 12:08:02 -0700 From: Zsolt Parragi In-Reply-To: <92CAD935-5ECE-46D8-B7D7-D8E3C991CC10@gmail.com> References: <33E9C4C2-B6A8-4FCC-BEEA-461EA5FB98C8@gmail.com> <7F0EA98A-6DBC-436A-8FF4-4A511A05ABE6@gmail.com> <7B7172F4-DB02-4259-997B-6AEF5ADF7FCE@gmail.com> <14E223D8-8425-446A-A36C-6B62BC334656@gmail.com> <9A3D388C-1DF4-4C43-9AB6-83529A8F48C8@gmail.com> <92CAD935-5ECE-46D8-B7D7-D8E3C991CC10@gmail.com> MIME-Version: 1.0 Date: Thu, 4 Jun 2026 12:08:02 -0700 X-Gm-Features: AVHnY4IOxREzi-UGxWOZNq3tV106N8ROXbnntFkSG9M4A1beY_WflzlDMaawpjE Message-ID: Subject: Re: Fix bug of CHECK constraint enforceability recursion To: pgsql-hackers@lists.postgresql.org Content-Type: text/plain; charset="UTF-8" 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 The new version looks correct, I don't see any logic problem with it, however, I do have a performance question: + /* + * A parent listed in changing_conids is being changed by the + * same ALTER, but it may not have been updated yet. For + * regular inheritance, recurse upward to check whether an + * equivalent enforced parent outside the ALTER will make it + * remain enforced. Partitions cannot have multiple parents, + * so they do not need this check. + */ + if (!rel->rd_rel->relispartition && + list_member_oid(changing_conids, parentcon->oid)) Shouldn't the parent lookup use some form of caching? Otherwise we'll end up reevaluating the same parents multiple times. I'm not sure if it is needed or not, how much of a performance impact this can have in a real-world server.