mirror of
https://github.com/postgres/postgres.git
synced 2025-06-11 20:28:21 +03:00
Fix pg_get_constraintdef for NOT NULL constraints on domains
We added pg_constraint rows for all not-null constraints, first for tables and later for domains; but while the ones for tables were reverted, the ones for domains were not. However, we did accidentally revert ruleutils.c support for the ones on domains in6f8bb7c1e9
, which breaks running pg_get_constraintdef() on them. Put that back. This is only needed in branch 17, because we've reinstated this code in branch master with commit14e87ffa5c
. Add some new tests in both branches. I couldn't find anything else that needs de-reverting. Reported-by: Erki Eessaar <erki.eessaar@taltech.ee> Reviewed-by: Magnus Hagander <magnus@hagander.net> Discussion: https://postgr.es/m/AS8PR01MB75110350415AAB8BBABBA1ECFE222@AS8PR01MB7511.eurprd01.prod.exchangelabs.com
This commit is contained in:
@ -743,6 +743,20 @@ update domnotnull set col1 = null; -- fails
|
||||
ERROR: domain dnotnulltest does not allow null values
|
||||
alter domain dnotnulltest drop not null;
|
||||
update domnotnull set col1 = null;
|
||||
update domnotnull set col1 = 5;
|
||||
-- these constraints can also be added and removed by name
|
||||
alter domain dnotnulltest add constraint dnotnulltest_notnull not null;
|
||||
update domnotnull set col1 = null; -- fails
|
||||
ERROR: domain dnotnulltest does not allow null values
|
||||
select conname, pg_get_constraintdef(oid) from pg_constraint
|
||||
where contypid = 'dnotnulltest'::regtype;
|
||||
conname | pg_get_constraintdef
|
||||
----------------------+----------------------
|
||||
dnotnulltest_notnull | NOT NULL
|
||||
(1 row)
|
||||
|
||||
alter domain dnotnulltest drop constraint dnotnulltest_notnull;
|
||||
update domnotnull set col1 = null;
|
||||
drop domain dnotnulltest cascade;
|
||||
NOTICE: drop cascades to 2 other objects
|
||||
DETAIL: drop cascades to column col2 of table domnotnull
|
||||
|
@ -429,6 +429,17 @@ alter domain dnotnulltest drop not null;
|
||||
|
||||
update domnotnull set col1 = null;
|
||||
|
||||
update domnotnull set col1 = 5;
|
||||
|
||||
-- these constraints can also be added and removed by name
|
||||
alter domain dnotnulltest add constraint dnotnulltest_notnull not null;
|
||||
update domnotnull set col1 = null; -- fails
|
||||
select conname, pg_get_constraintdef(oid) from pg_constraint
|
||||
where contypid = 'dnotnulltest'::regtype;
|
||||
|
||||
alter domain dnotnulltest drop constraint dnotnulltest_notnull;
|
||||
update domnotnull set col1 = null;
|
||||
|
||||
drop domain dnotnulltest cascade;
|
||||
|
||||
-- Test ALTER DOMAIN .. DEFAULT ..
|
||||
|
Reference in New Issue
Block a user