|
|
|
@ -473,7 +473,7 @@ NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index 'atacc_test1' for t |
|
|
|
ERROR: Cannot create unique index. Table contains non-unique values |
|
|
|
ERROR: Cannot create unique index. Table contains non-unique values |
|
|
|
insert into atacc1 (test) values (3); |
|
|
|
insert into atacc1 (test) values (3); |
|
|
|
drop table atacc1; |
|
|
|
drop table atacc1; |
|
|
|
-- let's do one where the unique contsraint fails |
|
|
|
-- let's do one where the unique constraint fails |
|
|
|
-- because the column doesn't exist |
|
|
|
-- because the column doesn't exist |
|
|
|
create table atacc1 ( test int ); |
|
|
|
create table atacc1 ( test int ); |
|
|
|
-- add a unique constraint (fails) |
|
|
|
-- add a unique constraint (fails) |
|
|
|
@ -505,3 +505,76 @@ insert into atacc1 (test2, test) values (3, 3); |
|
|
|
insert into atacc1 (test2, test) values (2, 3); |
|
|
|
insert into atacc1 (test2, test) values (2, 3); |
|
|
|
ERROR: Cannot insert a duplicate key into unique index atacc1_test_key |
|
|
|
ERROR: Cannot insert a duplicate key into unique index atacc1_test_key |
|
|
|
drop table atacc1; |
|
|
|
drop table atacc1; |
|
|
|
|
|
|
|
-- test primary key constraint adding |
|
|
|
|
|
|
|
create table atacc1 ( test int ); |
|
|
|
|
|
|
|
-- add a primary key constraint |
|
|
|
|
|
|
|
alter table atacc1 add constraint atacc_test1 primary key (test); |
|
|
|
|
|
|
|
ERROR: Existing attribute "test" cannot be a PRIMARY KEY because it is not marked NOT NULL |
|
|
|
|
|
|
|
-- insert first value |
|
|
|
|
|
|
|
insert into atacc1 (test) values (2); |
|
|
|
|
|
|
|
-- should fail |
|
|
|
|
|
|
|
insert into atacc1 (test) values (2); |
|
|
|
|
|
|
|
-- should succeed |
|
|
|
|
|
|
|
insert into atacc1 (test) values (4); |
|
|
|
|
|
|
|
-- inserting NULL should fail |
|
|
|
|
|
|
|
insert into atacc1 (test) values(NULL); |
|
|
|
|
|
|
|
-- try adding a primary key oid constraint |
|
|
|
|
|
|
|
alter table atacc1 add constraint atacc_oid1 primary key(oid); |
|
|
|
|
|
|
|
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index 'atacc_oid1' for table 'atacc1' |
|
|
|
|
|
|
|
drop table atacc1; |
|
|
|
|
|
|
|
-- let's do one where the primary key constraint fails when added |
|
|
|
|
|
|
|
create table atacc1 ( test int ); |
|
|
|
|
|
|
|
-- insert soon to be failing rows |
|
|
|
|
|
|
|
insert into atacc1 (test) values (2); |
|
|
|
|
|
|
|
insert into atacc1 (test) values (2); |
|
|
|
|
|
|
|
-- add a primary key (fails) |
|
|
|
|
|
|
|
alter table atacc1 add constraint atacc_test1 primary key (test); |
|
|
|
|
|
|
|
ERROR: Existing attribute "test" cannot be a PRIMARY KEY because it is not marked NOT NULL |
|
|
|
|
|
|
|
insert into atacc1 (test) values (3); |
|
|
|
|
|
|
|
drop table atacc1; |
|
|
|
|
|
|
|
-- let's do another one where the primary key constraint fails when added |
|
|
|
|
|
|
|
create table atacc1 ( test int ); |
|
|
|
|
|
|
|
-- insert soon to be failing row |
|
|
|
|
|
|
|
insert into atacc1 (test) values (NULL); |
|
|
|
|
|
|
|
-- add a primary key (fails) |
|
|
|
|
|
|
|
alter table atacc1 add constraint atacc_test1 primary key (test); |
|
|
|
|
|
|
|
ERROR: Existing attribute "test" cannot be a PRIMARY KEY because it is not marked NOT NULL |
|
|
|
|
|
|
|
insert into atacc1 (test) values (3); |
|
|
|
|
|
|
|
drop table atacc1; |
|
|
|
|
|
|
|
-- let's do one where the primary key constraint fails |
|
|
|
|
|
|
|
-- because the column doesn't exist |
|
|
|
|
|
|
|
create table atacc1 ( test int ); |
|
|
|
|
|
|
|
-- add a primary key constraint (fails) |
|
|
|
|
|
|
|
alter table atacc1 add constraint atacc_test1 primary key (test1); |
|
|
|
|
|
|
|
ERROR: ALTER TABLE: column "test1" named in key does not exist |
|
|
|
|
|
|
|
drop table atacc1; |
|
|
|
|
|
|
|
-- something a little more complicated |
|
|
|
|
|
|
|
create table atacc1 ( test int, test2 int); |
|
|
|
|
|
|
|
-- add a primary key constraint |
|
|
|
|
|
|
|
alter table atacc1 add constraint atacc_test1 primary key (test, test2); |
|
|
|
|
|
|
|
ERROR: Existing attribute "test" cannot be a PRIMARY KEY because it is not marked NOT NULL |
|
|
|
|
|
|
|
-- try adding a second primary key - should fail |
|
|
|
|
|
|
|
alter table atacc1 add constraint atacc_test2 primary key (test); |
|
|
|
|
|
|
|
ERROR: Existing attribute "test" cannot be a PRIMARY KEY because it is not marked NOT NULL |
|
|
|
|
|
|
|
-- insert initial value |
|
|
|
|
|
|
|
insert into atacc1 (test,test2) values (4,4); |
|
|
|
|
|
|
|
-- should fail |
|
|
|
|
|
|
|
insert into atacc1 (test,test2) values (4,4); |
|
|
|
|
|
|
|
insert into atacc1 (test,test2) values (NULL,3); |
|
|
|
|
|
|
|
insert into atacc1 (test,test2) values (3, NULL); |
|
|
|
|
|
|
|
insert into atacc1 (test,test2) values (NULL,NULL); |
|
|
|
|
|
|
|
-- should all succeed |
|
|
|
|
|
|
|
insert into atacc1 (test,test2) values (4,5); |
|
|
|
|
|
|
|
insert into atacc1 (test,test2) values (5,4); |
|
|
|
|
|
|
|
insert into atacc1 (test,test2) values (5,5); |
|
|
|
|
|
|
|
drop table atacc1; |
|
|
|
|
|
|
|
-- lets do some naming tests |
|
|
|
|
|
|
|
create table atacc1 (test int, test2 int, primary key(test)); |
|
|
|
|
|
|
|
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'atacc1_pkey' for table 'atacc1' |
|
|
|
|
|
|
|
-- only first should succeed |
|
|
|
|
|
|
|
insert into atacc1 (test2, test) values (3, 3); |
|
|
|
|
|
|
|
insert into atacc1 (test2, test) values (2, 3); |
|
|
|
|
|
|
|
ERROR: Cannot insert a duplicate key into unique index atacc1_pkey |
|
|
|
|
|
|
|
insert into atacc1 (test2, test) values (1, NULL); |
|
|
|
|
|
|
|
ERROR: ExecAppend: Fail to add null value in not null attribute test |
|
|
|
|
|
|
|
drop table atacc1; |
|
|
|
|