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.



Reply via email to