public inbox for [email protected]  
help / color / mirror / Atom feed
From: Junwang Zhao <[email protected]>
To: [email protected]
To: [email protected]
Subject: Re: BUG #19444: conkey field empty for domain NOT NULL constraint in pg_constraint (18.3)
Date: Mon, 30 Mar 2026 22:17:19 +0800
Message-ID: <CAEG8a3LtSo304Py+pRtd8KWU=-T8+8Aa2room8rJ2Oq6=Go5rA@mail.gmail.com> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>

On Mon, Mar 30, 2026 at 7:52 PM PG Bug reporting form
<[email protected]> wrote:
>
> The following bug has been logged on the website:
>
> Bug reference:      19444
> Logged by:          Xianghang Zheng
> Email address:      [email protected]
> PostgreSQL version: 18.3
> Operating system:   Linux x86_64
> Description:
>
> When creating a domain with a NOT NULL constraint, the conkey field in
> pg_constraint remains empty. This is inconsistent with table-level NOT
> NULL constraints, which correctly populate the conkey field.
>
> Version: PostgreSQL 18.3 (x86_64)
> Platform: Linux x86_64
>
> Steps to Reproduce:
> -------------------
> CREATE DOMAIN my_domain AS text NOT NULL;
>
> SELECT conname, contype, conkey, contypid::regtype
> FROM pg_constraint
> WHERE contypid = 'my_domain'::regtype;
>
> Actual Result:
> --------------
>       conname       | contype | conkey | contypid
> --------------------+---------+--------+-----------
>  my_domain_not_null | n       |        | my_domain
> (1 row)
>
> Expected Result:
> ----------------
> The conkey field should contain {1} (the first and only column of the
> domain):
>
>       conname       | contype | conkey | contypid
> --------------------+---------+--------+-----------
>  my_domain_not_null | n       | {1}    | my_domain
>
> Additional Information:
> -----------------------
> - The NOT NULL constraint works correctly (rejects NULL values)
> - The issue is only with the system catalog metadata
> - This may affect tools like pg_dump, pg_upgrade, or extensions that rely
>   on the conkey field for domain constraints
> - Table-level NOT NULL constraints correctly populate conkey:
>
>   CREATE TABLE test_table (id text NOT NULL);
>   SELECT conname, contype, conkey FROM pg_constraint
>   WHERE conrelid = 'test_table'::regclass;
>
>   Result: test_table_id_not_null | n | {1}
>
> Please let me know if you need any additional information or testing.
>
>

I think you have interpreted this incorrectly, domain is a type, not a relation.
See the comments in pg_constraint.h for clarification.

/*
* conrelid and conkey are only meaningful if the constraint applies to a
* specific relation (this excludes domain constraints and assertions).
* Otherwise conrelid is 0 and conkey is NULL.
*/

>
>


-- 
Regards
Junwang Zhao






reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: BUG #19444: conkey field empty for domain NOT NULL constraint in pg_constraint (18.3)
  In-Reply-To: <CAEG8a3LtSo304Py+pRtd8KWU=-T8+8Aa2room8rJ2Oq6=Go5rA@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox