ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE text;
ALTER TABLE comment_test ALTER COLUMN positive_col SET DATA TYPE int;
ALTER TABLE comment_test ALTER COLUMN positive_col SET DATA TYPE bigint;
+-- Some error cases.
+ALTER TABLE comment_test ALTER COLUMN xmin SET DATA TYPE x;
+ERROR: cannot alter system column "xmin"
+ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE x;
+ERROR: type "x" does not exist
+ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE int COLLATE "C";
+ERROR: collations are not supported by type integer
-- Check that the comments are intact.
SELECT col_description('comment_test'::regclass, 1) as comment;
comment
-- this should fail because already gone
drop domain domaindroptest cascade;
ERROR: type "domaindroptest" does not exist
+-- some error cases
+create domain d_fail as no_such_type;
+ERROR: type "no_such_type" does not exist
+create domain d_fail as int constraint cc REFERENCES this_table_not_exists(i);
+ERROR: foreign key constraints not possible for domains
+create domain d_fail as int4 not null no inherit;
+ERROR: not-null constraints for domains cannot be marked NO INHERIT
+create domain d_fail as int4 not null null;
+ERROR: conflicting NULL/NOT NULL constraints
+create domain d_fail as int4 not null default 3 default 3;
+ERROR: multiple default expressions
+create domain d_fail int4 DEFAULT 3 + 'h';
+ERROR: invalid input syntax for type integer: "h"
+create domain d_fail int4 collate "C";
+ERROR: collations are not supported by type integer
+create domain d_fail as anyelement;
+ERROR: "anyelement" is not a valid base type for a domain
+create domain d_fail as int4 unique;
+ERROR: unique constraints not possible for domains
+create domain d_fail as int4 PRIMARY key;
+ERROR: primary key constraints not possible for domains
+create domain d_fail as int4 constraint cc generated by default as identity;
+ERROR: specifying GENERATED not supported for domains
+create domain d_fail as int4 constraint cc check (values > 1) no inherit;
+ERROR: check constraints for domains cannot be marked NO INHERIT
+create domain d_fail as int4 constraint cc check (values > 1) deferrable;
+ERROR: specifying constraint deferrability not supported for domains
-- Test domain input.
-- Note: the point of checking both INSERT and COPY FROM is that INSERT
-- exercises CoerceToDomain while COPY exercises domain_in.
NOTICE: argument type xfloat8 is only a shell
LINE 1: create function xfloat8out(xfloat8) returns cstring immutabl...
^
+create type xfloat8 (input = xfloat8in, output = xfloat8out, like = no_such_type);
+ERROR: type "no_such_type" does not exist
create type xfloat8 (input = xfloat8in, output = xfloat8out, like = float8);
create cast (xfloat8 as float8) without function;
create cast (float8 as xfloat8) without function;
ALTER TABLE itest4 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; -- error, requires NOT NULL
ERROR: column "a" of relation "itest4" must be declared NOT NULL before identity can be added
ALTER TABLE itest4 ALTER COLUMN a SET NOT NULL;
+ALTER TABLE itest4 ALTER COLUMN c ADD GENERATED ALWAYS AS IDENTITY; -- error, column c does not exist
+ERROR: column "c" of relation "itest4" does not exist
ALTER TABLE itest4 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; -- ok
ALTER TABLE itest4 ALTER COLUMN a DROP NOT NULL; -- error, disallowed
ERROR: column "a" of relation "itest4" is an identity column
ALTER TABLE comment_test ALTER COLUMN positive_col SET DATA TYPE int;
ALTER TABLE comment_test ALTER COLUMN positive_col SET DATA TYPE bigint;
+-- Some error cases.
+ALTER TABLE comment_test ALTER COLUMN xmin SET DATA TYPE x;
+ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE x;
+ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE int COLLATE "C";
+
-- Check that the comments are intact.
SELECT col_description('comment_test'::regclass, 1) as comment;
SELECT indexrelid::regclass::text as index, obj_description(indexrelid, 'pg_class') as comment FROM pg_index where indrelid = 'comment_test'::regclass ORDER BY 1, 2;
-- this should fail because already gone
drop domain domaindroptest cascade;
+-- some error cases
+create domain d_fail as no_such_type;
+create domain d_fail as int constraint cc REFERENCES this_table_not_exists(i);
+create domain d_fail as int4 not null no inherit;
+create domain d_fail as int4 not null null;
+create domain d_fail as int4 not null default 3 default 3;
+create domain d_fail int4 DEFAULT 3 + 'h';
+create domain d_fail int4 collate "C";
+create domain d_fail as anyelement;
+create domain d_fail as int4 unique;
+create domain d_fail as int4 PRIMARY key;
+create domain d_fail as int4 constraint cc generated by default as identity;
+create domain d_fail as int4 constraint cc check (values > 1) no inherit;
+create domain d_fail as int4 constraint cc check (values > 1) deferrable;
-- Test domain input.
language internal as 'int8in';
create function xfloat8out(xfloat8) returns cstring immutable strict
language internal as 'int8out';
+create type xfloat8 (input = xfloat8in, output = xfloat8out, like = no_such_type);
create type xfloat8 (input = xfloat8in, output = xfloat8out, like = float8);
create cast (xfloat8 as float8) without function;
create cast (float8 as xfloat8) without function;
CREATE TABLE itest4 (a int, b text);
ALTER TABLE itest4 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; -- error, requires NOT NULL
ALTER TABLE itest4 ALTER COLUMN a SET NOT NULL;
+ALTER TABLE itest4 ALTER COLUMN c ADD GENERATED ALWAYS AS IDENTITY; -- error, column c does not exist
ALTER TABLE itest4 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; -- ok
ALTER TABLE itest4 ALTER COLUMN a DROP NOT NULL; -- error, disallowed
ALTER TABLE itest4 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; -- error, already set