information_schema and not-null constraints

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема information_schema and not-null constraints
Дата
Msg-id 202309041710.psytrxlsiqex@alvherre.pgsql
обсуждение исходный текст
Ответы Re: information_schema and not-null constraints  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: information_schema and not-null constraints  (Alvaro Herrera <alvherre@alvh.no-ip.org>)
Re: information_schema and not-null constraints  (Alvaro Herrera <alvherre@alvh.no-ip.org>)
Список pgsql-hackers
In reference to [1], 0001 attached to this email contains the updated
view definitions that I propose.

In 0002, I took the tests added by Peter's proposed patch and put them
in a separate test file that runs at the end.  There are some issues,
however.  One is that the ORDER BY clause in the check_constraints view
is not fully deterministic, because the table name is not part of the
view definition, so we cannot sort by table name.  In the current
regression database there is only one case[2] where two constraints have
the same name and different definition:

  inh_check_constraint       │     2 │ ((f1 > 0)) NOT VALID ↵
                             │       │ ((f1 > 0))

(on tables invalid_check_con and invalid_check_con_child).  I assume
this is going to bite us at some point.  We could just add a WHERE
clause to omit that one constraint.

Another issue I notice eyeballing at the results is that foreign keys on
partitioned tables are listing the rows used to implement the
constraints on partitions, which are sort-of "internal" constraints (and
are not displayed by psql's \d).  I hope this is a relatively simple fix
that we could extract from the code used by psql.

Anyway, I think I'm going to get 0001 committed sometime tomorrow, and
then play a bit more with 0002 to try and get it pushed soon also.

Thanks

[1] https://postgr.es/m/81b461c4-edab-5d8c-2f88-203108425340@enterprisedb.com

[2]
select constraint_name, count(*),
       string_agg(distinct check_clause, E'\n')
from information_schema.check_constraints
group by constraint_name
having count(*) > 1;

-- 
Álvaro Herrera               48°01'N 7°57'E  —  https://www.EnterpriseDB.com/
"You don't solve a bad join with SELECT DISTINCT" #CupsOfFail
https://twitter.com/connor_mc_d/status/1431240081726115845

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Aleksander Alekseev
Дата:
Сообщение: Re: Commitfest 2023-09 starts soon
Следующее
От: Jim Jones
Дата:
Сообщение: Re: PATCH: Add REINDEX tag to event triggers