mirror of
https://github.com/postgres/postgres.git
synced 2025-12-15 02:22:24 +03:00
Partial code review for ALTER DOMAIN patch. Incorporates Rod Taylor's
patches of 9-Dec (permissions fix) and 13-Dec (performance) as well as a partial fix for locking issues: concurrent DROP COLUMN should not create trouble anymore. But concurrent DROP TABLE is still a risk, and there is no protection at all against creating a column of a domain while we are altering the domain.
This commit is contained in:
@@ -201,19 +201,19 @@ create table domnotnull
|
||||
);
|
||||
insert into domnotnull default values;
|
||||
alter domain dnotnulltest set not null; -- fails
|
||||
ERROR: ALTER DOMAIN: Relation "domnotnull" Attribute "col1" contains NULL values
|
||||
ERROR: ALTER DOMAIN: Relation "domnotnull" attribute "col1" contains NULL values
|
||||
update domnotnull set col1 = 5;
|
||||
alter domain dnotnulltest set not null; -- fails
|
||||
ERROR: ALTER DOMAIN: Relation "domnotnull" Attribute "col2" contains NULL values
|
||||
ERROR: ALTER DOMAIN: Relation "domnotnull" attribute "col2" contains NULL values
|
||||
update domnotnull set col2 = 6;
|
||||
alter domain dnotnulltest set not null;
|
||||
alter domain dnotnulltest set not null; -- fails
|
||||
ERROR: AlterDomain: dnotnulltest is already set to NOT NULL
|
||||
NOTICE: AlterDomain: dnotnulltest is already set to NOT NULL
|
||||
update domnotnull set col1 = null; -- fails
|
||||
ERROR: Domain dnotnulltest does not allow NULL values
|
||||
alter domain dnotnulltest drop not null;
|
||||
alter domain dnotnulltest drop not null; -- fails
|
||||
ERROR: AlterDomain: dnotnulltest is already set to NULL
|
||||
NOTICE: AlterDomain: dnotnulltest is already set to NULL
|
||||
update domnotnull set col1 = null;
|
||||
drop domain dnotnulltest cascade;
|
||||
NOTICE: Drop cascades to table domnotnull column col2
|
||||
@@ -253,7 +253,7 @@ create table domcontest (col1 con);
|
||||
insert into domcontest values (1);
|
||||
insert into domcontest values (2);
|
||||
alter domain con add constraint t check (VALUE < 1); -- fails
|
||||
ERROR: AlterDomainAddConstraint: Domain con constraint t failed
|
||||
ERROR: ALTER DOMAIN: Relation "domcontest" attribute "col1" contains values that fail the new constraint
|
||||
alter domain con add constraint t check (VALUE < 34);
|
||||
alter domain con add check (VALUE > 0);
|
||||
insert into domcontest values (-5); -- fails
|
||||
|
||||
Reference in New Issue
Block a user