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 1w7DmH-0055MS-2f for pgsql-bugs@arkaria.postgresql.org; Mon, 30 Mar 2026 14:39: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 1w7DmG-003oFh-1B for pgsql-bugs@arkaria.postgresql.org; Mon, 30 Mar 2026 14:39:40 +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 1w7DmG-003oFZ-0N for pgsql-bugs@lists.postgresql.org; Mon, 30 Mar 2026 14:39:40 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7DmE-00000001okh-3gmY for pgsql-bugs@lists.postgresql.org; Mon, 30 Mar 2026 14:39:39 +0000 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-66b957dd76dso2487231a12.3 for ; Mon, 30 Mar 2026 07:39:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774881576; cv=none; d=google.com; s=arc-20240605; b=RaBYGzrVXsxNa/1lpp70Gw+qGVgFO9bGG94jlzSofol261F0go9/ovvpx8aOJ3tulj NXeuEDA7XgFYA3bv8Pk8BNjaFp2uv/m+iIOonFjznJ9WWJlQ4xSx8Q3rqfaC1agsCBlu RNH+4kCa6BL9cxjwqbOZ9M1GMT4RL+3YqzoQoZorGu0cvnF2RLDiOR2ae40IlzPkw7Bg pxHU6HVDRNkhdxnU0eI1rEMvex6dMpM3vnYOSMOhjAAqwEIgDXIo0wGxYN3+X/0kHAr4 /bYN80YEQrknp9IOVCxERmMi/9kqyaE7931EFL/kX2SKXU34KjFVB++3vzz6dN8oOLL2 3n8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=DiI77QB5K2TwogYyWHnHGmEy9mCsmtXzSQOLOGmAH2s=; fh=h+9AghBa1WpUv58FabieLSyfK04mlnr3+ad3KQqED7M=; b=eIb6onCmWmSHsOVv5SK/paw8wAC7kEexCzw/9qfiJLzT2tlI/0gM5rYSaFicxRWCd1 3I1vBGjdHH0o62fzO2YuV9e74l1tgGMHrMF3kxh/CfbUngVB1dh1znybvIpTQwIiDPDY Uh3A4u8axPfq5lXexiZARM2kKRfaOLmfb3U8QTt3ivzdIZ2SyCO92DyuQiH9qiwxJtxQ O/ssTwuWiY42NmhM0NTcCvfuDjgjkY4k6mbb5pNMMffvUiTrhGOtwkuzT++iYsmrMUij aHg3jPjSUyGmQjGX0PIqn1enliXC6BWqMywt/SUZdpTu3ucinbusJ+jogRh5tN2ohWDZ 09dg==; 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=1774881576; x=1775486376; darn=lists.postgresql.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=DiI77QB5K2TwogYyWHnHGmEy9mCsmtXzSQOLOGmAH2s=; b=E3lP9dUnwfOdrH9KWQAUyR2l/QITQLMjSmdSnxXSuwhKxdFop4g1lD12l6a+LuQrRo f+/I9ifGhgozg4bB0Bkr8PEfl90tXa7oWMN/yi1RFut0HAZ1+KatoB+PjLUEXOBoUCCv 22XSw+/+WZMtFHCDuudPWc2fFi99jAJ4IcL1joAUmQqtrWquPnzskdinxme1F4tPV9Oh MvAnemQskxiQaRwBj5sNqKDU2OZxJDLbUy9vrmw2RmReyMODR637ogCEWInefzk8yy0t yp41SB778JRx100w/0lTkBuqUz+SYnVjzFg9Pm41xBws34349sLeREzMt3cuqEwHt20n s2oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774881576; x=1775486376; h=content-transfer-encoding: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=DiI77QB5K2TwogYyWHnHGmEy9mCsmtXzSQOLOGmAH2s=; b=huS+xrGB6jaS4PtDPRrTK9zEPu/F1J7Y9FA7N/zMBgG4ZMlRwc5hnTQsO86gjHMOGN GWDCdaFLUcNWywzDZj14lhbhjBDqfJAyXAZDVJBz/HXhFhdO86fvJHAj6tt0PsR5IzFm IZrWkcHoYEP3fXWAT71nZgt9DVFmz/pRuthHzbJwqqXzOArUlZWU8JjjY6+w4qaFgGQ2 zY8Tw5XQ+vjiroljB0r320ND1uvqn6VMnBChHu+1JAkAHOhAxUSX8p2qLuGFd6owdadE iHM/dPV20exw+WSfNK/n1GLrV2L89rX5eKojUABvg47me4gYTSTIP7k+LpbZP2TdiW2s JB5w== X-Forwarded-Encrypted: i=1; AJvYcCUTQgMkRibB+nR8BjgmHPOhT8B1+myX5QOwM1X9MgynH1FPorsQ+gwjrq7xkjlIbtE4um4DTveLlLIx@lists.postgresql.org X-Gm-Message-State: AOJu0YyhjqN8DRnn207PdIvY3FQlgfbLkSLkHdrW2lbMXBGBzW0x+nhH 0mvyo9auue5CGurpFxx55A4dqtU6H4NNiAonE2JSaHqHnh978wI3+0lRXGNb0dKaOZsnWQr23F3 zpYxYcUHdcIO1XAq4o9cnIjzQJfwA5TjSeTgzpEkXlg== X-Gm-Gg: ATEYQzyqM9GUfGEJm6XgEw4VhJbRi8yJl/8ORw5rVJe7x5M9C9qDTk9vtiO6JomJZMD RPogIqIsnAurGnlpTI1hMoBe6ToQHXcVMr1SJYwXdbCqFSV9jhhrkLDFe6fdx6DunMGp2Gch8CO x7aFqFakZwI+RXpafe3A2stGqfDeUSxy9O9Cso7akxuEd486NgAGKih0NgH4c0ZZXP2OegqAcqH vkKbZQH6mLZoWJYcvNPGQ4IPkJa2mi7BX/nS2Jd2wXJpZ9U6kY2ZAWbU+yo6uEEluWaQsj0k3Yp 0aGHhTbfqNT8OsP2bbmK6xJARNBsQQoffwATySXJ4he2p+UzshGroDnsoC8lz4a2PRFcLW/EDQ= = X-Received: by 2002:a05:6402:46d5:b0:66c:2ea2:b19f with SMTP id 4fb4d7f45d1cf-66c2ea2b2a3mr59374a12.5.1774881575925; Mon, 30 Mar 2026 07:39:35 -0700 (PDT) MIME-Version: 1.0 References: <19442-4a6a013c75f2ebbd@postgresql.org> In-Reply-To: <19442-4a6a013c75f2ebbd@postgresql.org> From: Junwang Zhao Date: Mon, 30 Mar 2026 22:39:23 +0800 X-Gm-Features: AQROBzBlOvKOzV_i_WKj1rzhIjewqqEqJCYzAdtRtPAjlVF7_GzCyNuOkfJGoXU Message-ID: Subject: Re: BUG #19442: PL/pgSQL: domain over composite type bypasses type validation when assigning NULL (PostgreSQL 18.3) To: zheng_xianghang@163.com, pgsql-bugs@lists.postgresql.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Mon, Mar 30, 2026 at 7:52=E2=80=AFPM PG Bug reporting form wrote: > > The following bug has been logged on the website: > > Bug reference: 19442 > Logged by: Xianghang Zheng > Email address: zheng_xianghang@163.com > PostgreSQL version: 18.3 > Operating system: Linux x86_64 > Description: > > I found an issue on PostgreSQL 18.3 related to domain handling over > composite types in PL/pgSQL. > After the fix for BUG #18735, the "cache lookup failed for type 0" error = no > longer occurs, but a new correctness problem arises: > When assigning a NULL composite variable to a domain over composite type = in > PL/pgSQL, > the domain's type validation and coercion logic is bypassed. > This indicates an incomplete fix and may lead to incorrect enforcement of > domain constraints (CHECK, NOT NULL, etc.) in the future. > Version: PostgreSQL 18.3 > Test case: > CREATE TYPE comp AS (a int, b text); > CREATE DOMAIN dcomp AS comp; > CREATE OR REPLACE FUNCTION test_domain_bug() > RETURNS dcomp > AS $$ > DECLARE > v_comp comp :=3D NULL; > v_dcomp dcomp; > BEGIN > v_dcomp :=3D v_comp; > RETURN v_dcomp; > END; > $$ LANGUAGE plpgsql; > SELECT test_domain_bug(); > Actual result: NULL (no error) > Expected result: Domain type coercion should be properly executed even fo= r > NULL values. dcomp doesn't have the not null constraint, so I think this is ok? I tried `CREATE DOMAIN dcomp AS comp not null;`, it does report error: [local] zhjwpku@postgres:5432-20309=3D# SELECT test_domain_bug(); ERROR: domain dcomp does not allow null values CONTEXT: PL/pgSQL function test_domain_bug() line 4 during statement block local variable initialization Time: 2.730 ms > This is a regression caused by incomplete backpatch of BUG #18735. > > > > --=20 Regards Junwang Zhao