Re: Catalog domain not-null constraints
От | Peter Eisentraut |
---|---|
Тема | Re: Catalog domain not-null constraints |
Дата | |
Msg-id | 6192a97e-7af6-43bb-acff-fee587353407@eisentraut.org обсуждение исходный текст |
Ответ на | Re: Catalog domain not-null constraints (jian he <jian.universality@gmail.com>) |
Список | pgsql-hackers |
On 09.04.24 10:44, jian he wrote: >> After studying this a bit more, I think moving forward in this direction >> is the best way. Attached is a new patch version, mainly with a more >> elaborate commit message. This patch makes the not-null constraint >> syntax consistent between CREATE DOMAIN and ALTER DOMAIN, and also makes >> the respective documentation correct. >> >> (Note that, as I show in the commit message, commit e5da0fe3c22 had in >> passing fixed a couple of bugs in CREATE and ALTER DOMAIN, so just >> reverting that commit wouldn't be a complete solution.) > in ruleutils.c > /* conkey is null for domain not-null constraints */ > appendStringInfoString(&buf, "NOT NULL VALUE"); > > should be > > /* conkey is null for domain not-null constraints */ > appendStringInfoString(&buf, "NOT NULL "); Good catch, fixed. > currently > src6=# \dD connotnull > /******** QUERY *********/ > SELECT n.nspname as "Schema", > t.typname as "Name", > pg_catalog.format_type(t.typbasetype, t.typtypmod) as "Type", > (SELECT c.collname FROM pg_catalog.pg_collation c, pg_catalog.pg_type bt > WHERE c.oid = t.typcollation AND bt.oid = t.typbasetype AND > t.typcollation <> bt.typcollation) as "Collation", > CASE WHEN t.typnotnull THEN 'not null' END as "Nullable", > t.typdefault as "Default", > pg_catalog.array_to_string(ARRAY( > SELECT pg_catalog.pg_get_constraintdef(r.oid, true) FROM > pg_catalog.pg_constraint r WHERE t.oid = r.contypid > ), ' ') as "Check" > FROM pg_catalog.pg_type t > LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace > WHERE t.typtype = 'd' > AND t.typname OPERATOR(pg_catalog.~) '^(connotnull)$' COLLATE > pg_catalog.default > AND pg_catalog.pg_type_is_visible(t.oid) > ORDER BY 1, 2; > /************************/ > > --- > Since the last column is already named as "Check", maybe we need to > change the query to > pg_catalog.array_to_string(ARRAY( > SELECT pg_catalog.pg_get_constraintdef(r.oid, true) FROM > pg_catalog.pg_constraint r WHERE t.oid = r.contypid > and r.contype = 'c' > ), ' ') as "Check" > > That means domain can be associated with check constraint and not-null > constraint. Yes, I changed it like you wrote. > the url link destination is fine, but the url rendered name is "per > the section called “Notes”" which seems strange, > please see attached. Hmm, changing that would be an independent project. I have committed the patch with the two amendments you provided. I had also added a test of \dD and that caused some test output instability, so I added a ORDER BY r.conname to the \dD query.
В списке pgsql-hackers по дате отправления: