aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2002-08-02 18:15:10 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2002-08-02 18:15:10 +0000
commit38bb77a5d15aa022248488bc8c0147139ce120a9 (patch)
treed01573bceae2db61eb97421f91c6068ef8522b66 /src/test
parent5e6528adf726429463a5c1f3edf712f98d6b5f7e (diff)
downloadpostgresql-38bb77a5d15aa022248488bc8c0147139ce120a9.tar.gz
postgresql-38bb77a5d15aa022248488bc8c0147139ce120a9.zip
ALTER TABLE DROP COLUMN works. Patch by Christopher Kings-Lynne,
code review by Tom Lane. Remaining issues: functions that take or return tuple types are likely to break if one drops (or adds!) a column in the table defining the type. Need to think about what to do here. Along the way: some code review for recent COPY changes; mark system columns attnotnull = true where appropriate, per discussion a month ago.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/regress/expected/alter_table.out294
-rw-r--r--src/test/regress/expected/copy2.out44
-rw-r--r--src/test/regress/sql/alter_table.sql160
-rw-r--r--src/test/regress/sql/copy2.sql6
4 files changed, 495 insertions, 9 deletions
diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out
index 2dc64f3ccfa..741b012c289 100644
--- a/src/test/regress/expected/alter_table.out
+++ b/src/test/regress/expected/alter_table.out
@@ -635,9 +635,9 @@ delete from atacc1;
alter table atacc1 alter test set not null;
-- try altering a non-existent column, should fail
alter table atacc1 alter bar set not null;
-ERROR: ALTER TABLE: relation "atacc1" has no column "bar"
+ERROR: Relation "atacc1" has no column "bar"
alter table atacc1 alter bar drop not null;
-ERROR: ALTER TABLE: relation "atacc1" has no column "bar"
+ERROR: Relation "atacc1" has no column "bar"
-- try altering the oid column, should fail
alter table atacc1 alter oid set not null;
ERROR: ALTER TABLE: Cannot alter system attribute "oid"
@@ -707,7 +707,7 @@ ERROR: pg_atoi: error in "wrong_datatype": can't parse "wrong_datatype"
alter table def_test alter column c2 set default 20;
-- set defaults on a non-existent column: this should fail
alter table def_test alter column c3 set default 30;
-ERROR: ALTER TABLE: relation "def_test" has no column "c3"
+ERROR: Relation "def_test" has no column "c3"
-- set defaults on views: we need to create a view, add a rule
-- to allow insertions into it, and then alter the view to add
-- a default
@@ -735,3 +735,291 @@ select * from def_view_test;
drop rule def_view_test_ins on def_view_test;
drop view def_view_test;
drop table def_test;
+-- alter table / drop column tests
+-- try altering system catalogs, should fail
+alter table pg_class drop column relname;
+ERROR: ALTER TABLE: relation "pg_class" is a system catalog
+-- try altering non-existent table, should fail
+alter table foo drop column bar;
+ERROR: Relation "foo" does not exist
+-- test dropping columns
+create table atacc1 (a int4 not null, b int4, c int4 not null, d int4);
+insert into atacc1 values (1, 2, 3, 4);
+alter table atacc1 drop a;
+alter table atacc1 drop a;
+ERROR: Relation "atacc1" has no column "a"
+-- SELECTs
+select * from atacc1;
+ b | c | d
+---+---+---
+ 2 | 3 | 4
+(1 row)
+
+select * from atacc1 order by a;
+ERROR: Attribute "a" not found
+select * from atacc1 order by "........pg.dropped.1........";
+ERROR: Attribute "........pg.dropped.1........" not found
+select * from atacc1 group by a;
+ERROR: Attribute "a" not found
+select * from atacc1 group by "........pg.dropped.1........";
+ERROR: Attribute "........pg.dropped.1........" not found
+select atacc1.* from atacc1;
+ b | c | d
+---+---+---
+ 2 | 3 | 4
+(1 row)
+
+select a from atacc1;
+ERROR: Attribute "a" not found
+select atacc1.a from atacc1;
+ERROR: No such attribute atacc1.a
+select b,c,d from atacc1;
+ b | c | d
+---+---+---
+ 2 | 3 | 4
+(1 row)
+
+select a,b,c,d from atacc1;
+ERROR: Attribute "a" not found
+select * from atacc1 where a = 1;
+ERROR: Attribute "a" not found
+select "........pg.dropped.1........" from atacc1;
+ERROR: Attribute "........pg.dropped.1........" not found
+select atacc1."........pg.dropped.1........" from atacc1;
+ERROR: No such attribute atacc1.........pg.dropped.1........
+select "........pg.dropped.1........",b,c,d from atacc1;
+ERROR: Attribute "........pg.dropped.1........" not found
+select * from atacc1 where "........pg.dropped.1........" = 1;
+ERROR: Attribute "........pg.dropped.1........" not found
+-- UPDATEs
+update atacc1 set a = 3;
+ERROR: Relation "atacc1" has no column "a"
+update atacc1 set b = 2 where a = 3;
+ERROR: Attribute "a" not found
+update atacc1 set "........pg.dropped.1........" = 3;
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+update atacc1 set b = 2 where "........pg.dropped.1........" = 3;
+ERROR: Attribute "........pg.dropped.1........" not found
+-- INSERTs
+insert into atacc1 values (10, 11, 12, 13);
+ERROR: INSERT has more expressions than target columns
+insert into atacc1 values (default, 11, 12, 13);
+ERROR: INSERT has more expressions than target columns
+insert into atacc1 values (11, 12, 13);
+insert into atacc1 (a) values (10);
+ERROR: Relation "atacc1" has no column "a"
+insert into atacc1 (a) values (default);
+ERROR: Relation "atacc1" has no column "a"
+insert into atacc1 (a,b,c,d) values (10,11,12,13);
+ERROR: Relation "atacc1" has no column "a"
+insert into atacc1 (a,b,c,d) values (default,11,12,13);
+ERROR: Relation "atacc1" has no column "a"
+insert into atacc1 (b,c,d) values (11,12,13);
+insert into atacc1 ("........pg.dropped.1........") values (10);
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+insert into atacc1 ("........pg.dropped.1........") values (default);
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+insert into atacc1 ("........pg.dropped.1........",b,c,d) values (10,11,12,13);
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+insert into atacc1 ("........pg.dropped.1........",b,c,d) values (default,11,12,13);
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+-- DELETEs
+delete from atacc1 where a = 3;
+ERROR: Attribute "a" not found
+delete from atacc1 where "........pg.dropped.1........" = 3;
+ERROR: Attribute "........pg.dropped.1........" not found
+delete from atacc1;
+-- try dropping a non-existent column, should fail
+alter table atacc1 drop bar;
+ERROR: Relation "atacc1" has no column "bar"
+-- try dropping the oid column, should fail
+alter table atacc1 drop oid;
+ERROR: ALTER TABLE: Cannot drop system attribute "oid"
+-- try creating a view and altering that, should fail
+create view myview as select * from atacc1;
+select * from myview;
+ b | c | d
+---+---+---
+(0 rows)
+
+alter table myview drop d;
+ERROR: ALTER TABLE: relation "myview" is not a table
+drop view myview;
+-- test some commands to make sure they fail on the dropped column
+analyze atacc1(a);
+ERROR: Relation "atacc1" has no column "a"
+analyze atacc1("........pg.dropped.1........");
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+vacuum analyze atacc1(a);
+ERROR: Relation "atacc1" has no column "a"
+vacuum analyze atacc1("........pg.dropped.1........");
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+comment on column atacc1.a is 'testing';
+ERROR: Relation "atacc1" has no column "a"
+comment on column atacc1."........pg.dropped.1........" is 'testing';
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+alter table atacc1 alter a set storage plain;
+ERROR: ALTER TABLE: relation "atacc1" has no column "a"
+alter table atacc1 alter "........pg.dropped.1........" set storage plain;
+ERROR: ALTER TABLE: relation "atacc1" has no column "........pg.dropped.1........"
+alter table atacc1 alter a set statistics 0;
+ERROR: ALTER TABLE: relation "atacc1" has no column "a"
+alter table atacc1 alter "........pg.dropped.1........" set statistics 0;
+ERROR: ALTER TABLE: relation "atacc1" has no column "........pg.dropped.1........"
+alter table atacc1 alter a set default 3;
+ERROR: Relation "atacc1" has no column "a"
+alter table atacc1 alter "........pg.dropped.1........" set default 3;
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+alter table atacc1 alter a drop default;
+ERROR: Relation "atacc1" has no column "a"
+alter table atacc1 alter "........pg.dropped.1........" drop default;
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+alter table atacc1 alter a set not null;
+ERROR: Relation "atacc1" has no column "a"
+alter table atacc1 alter "........pg.dropped.1........" set not null;
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+alter table atacc1 alter a drop not null;
+ERROR: Relation "atacc1" has no column "a"
+alter table atacc1 alter "........pg.dropped.1........" drop not null;
+ERROR: Relation "atacc1" has no column "........pg.dropped.1........"
+alter table atacc1 rename a to x;
+ERROR: renameatt: attribute "a" does not exist
+alter table atacc1 rename "........pg.dropped.1........" to x;
+ERROR: renameatt: attribute "........pg.dropped.1........" does not exist
+alter table atacc1 add primary key(a);
+ERROR: ALTER TABLE: column "a" named in key does not exist
+alter table atacc1 add primary key("........pg.dropped.1........");
+ERROR: ALTER TABLE: column "........pg.dropped.1........" named in key does not exist
+alter table atacc1 add unique(a);
+ERROR: ALTER TABLE: column "a" named in key does not exist
+alter table atacc1 add unique("........pg.dropped.1........");
+ERROR: ALTER TABLE: column "........pg.dropped.1........" named in key does not exist
+alter table atacc1 add check (a > 3);
+ERROR: Attribute "a" not found
+alter table atacc1 add check ("........pg.dropped.1........" > 3);
+ERROR: Attribute "........pg.dropped.1........" not found
+create table atacc2 (id int4 unique);
+NOTICE: CREATE TABLE / UNIQUE will create implicit index 'atacc2_id_key' for table 'atacc2'
+alter table atacc1 add foreign key (a) references atacc2(id);
+NOTICE: ALTER TABLE will create implicit trigger(s) for FOREIGN KEY check(s)
+ERROR: ALTER TABLE: column "a" referenced in foreign key constraint does not exist
+alter table atacc1 add foreign key ("........pg.dropped.1........") references atacc2(id);
+NOTICE: ALTER TABLE will create implicit trigger(s) for FOREIGN KEY check(s)
+ERROR: ALTER TABLE: column "........pg.dropped.1........" referenced in foreign key constraint does not exist
+alter table atacc2 add foreign key (id) references atacc1(a);
+NOTICE: ALTER TABLE will create implicit trigger(s) for FOREIGN KEY check(s)
+ERROR: UNIQUE constraint matching given keys for referenced table "atacc1" not found
+alter table atacc2 add foreign key (id) references atacc1("........pg.dropped.1........");
+NOTICE: ALTER TABLE will create implicit trigger(s) for FOREIGN KEY check(s)
+ERROR: UNIQUE constraint matching given keys for referenced table "atacc1" not found
+drop table atacc2;
+create index "testing_idx" on atacc1(a);
+ERROR: DefineIndex: attribute "a" not found
+create index "testing_idx" on atacc1("........pg.dropped.1........");
+ERROR: DefineIndex: attribute "........pg.dropped.1........" not found
+-- test create as and select into
+insert into atacc1 values (21, 22, 23);
+create table test1 as select * from atacc1;
+select * from test1;
+ b | c | d
+----+----+----
+ 21 | 22 | 23
+(1 row)
+
+drop table test1;
+select * into test2 from atacc1;
+select * from test2;
+ b | c | d
+----+----+----
+ 21 | 22 | 23
+(1 row)
+
+drop table test2;
+-- try dropping all columns
+alter table atacc1 drop c;
+alter table atacc1 drop d;
+alter table atacc1 drop b;
+ERROR: ALTER TABLE: Cannot drop last column from table "atacc1"
+select * from atacc1;
+ b
+----
+ 21
+(1 row)
+
+drop table atacc1;
+-- test inheritance
+create table parent (a int, b int, c int);
+insert into parent values (1, 2, 3);
+alter table parent drop a;
+create table child (d varchar(255)) inherits (parent);
+insert into child values (12, 13, 'testing');
+select * from parent;
+ b | c
+----+----
+ 2 | 3
+ 12 | 13
+(2 rows)
+
+select * from child;
+ b | c | d
+----+----+---------
+ 12 | 13 | testing
+(1 row)
+
+alter table parent drop c;
+select * from parent;
+ b
+----
+ 2
+ 12
+(2 rows)
+
+select * from child;
+ b | d
+----+---------
+ 12 | testing
+(1 row)
+
+drop table child;
+drop table parent;
+-- test copy in/out
+create table test (a int4, b int4, c int4);
+insert into test values (1,2,3);
+alter table test drop a;
+copy test to stdout;
+2 3
+copy test(a) to stdout;
+ERROR: Relation "test" has no column "a"
+copy test("........pg.dropped.1........") to stdout;
+ERROR: Relation "test" has no column "........pg.dropped.1........"
+copy test from stdin;
+ERROR: copy: line 1, Extra data after last expected column
+lost synchronization with server, resetting connection
+select * from test;
+ b | c
+---+---
+ 2 | 3
+(1 row)
+
+copy test from stdin;
+select * from test;
+ b | c
+----+----
+ 2 | 3
+ 21 | 22
+(2 rows)
+
+copy test(a) from stdin;
+ERROR: Relation "test" has no column "a"
+copy test("........pg.dropped.1........") from stdin;
+ERROR: Relation "test" has no column "........pg.dropped.1........"
+copy test(b,c) from stdin;
+select * from test;
+ b | c
+----+----
+ 2 | 3
+ 21 | 22
+ 31 | 32
+(3 rows)
+
+drop table test;
diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out
index e4f806c8a56..58a5b6eb22a 100644
--- a/src/test/regress/expected/copy2.out
+++ b/src/test/regress/expected/copy2.out
@@ -29,26 +29,44 @@ COPY x (b, d) from stdin;
COPY x (a, b, c, d, e) from stdin;
-- non-existent column in column list: should fail
COPY x (xyz) from stdin;
-ERROR: COPY: Specified column "xyz" does not exist
+ERROR: Relation "x" has no column "xyz"
-- too many columns in column list: should fail
COPY x (a, b, c, d, e, d, c) from stdin;
-ERROR: COPY: Too many columns specified
+ERROR: Attribute "d" specified more than once
-- missing data: should fail
COPY x from stdin;
-ERROR: copy: line 1, COPY TEXT: Missing data for attribute 1
+ERROR: copy: line 1, Missing data for column "b"
lost synchronization with server, resetting connection
COPY x from stdin;
-ERROR: copy: line 1, COPY TEXT: Missing data for attribute 4
+ERROR: copy: line 1, Missing data for column "e"
lost synchronization with server, resetting connection
COPY x from stdin;
-ERROR: copy: line 1, COPY TEXT: Missing data for attribute 4
+ERROR: copy: line 1, Missing data for column "e"
lost synchronization with server, resetting connection
-- extra data: should fail
COPY x from stdin;
-ERROR: copy: line 1, COPY TEXT: Extra data encountered
+ERROR: copy: line 1, Extra data after last expected column
lost synchronization with server, resetting connection
-- various COPY options: delimiters, oids, NULL string
COPY x (b, c, d, e) from stdin with oids delimiter ',' null 'x';
+-- check results of copy in
+SELECT * FROM x;
+ a | b | c | d | e
+-------+----+-------+--------+----------------------
+ 10000 | 21 | 31 | 41 | before trigger fired
+ 10001 | 22 | 32 | 42 | before trigger fired
+ 10002 | 23 | 33 | 43 | before trigger fired
+ 10003 | 24 | 34 | 44 | before trigger fired
+ 10004 | 25 | 35 | 45 | before trigger fired
+ 10005 | 26 | 36 | 46 | before trigger fired
+ 6 | | 45 | 80 | before trigger fired
+ 1 | 1 | stuff | test_1 | after trigger fired
+ 2 | 2 | stuff | test_2 | after trigger fired
+ 3 | 3 | stuff | test_3 | after trigger fired
+ 4 | 4 | stuff | test_4 | after trigger fired
+ 5 | 5 | stuff | test_5 | after trigger fired
+(12 rows)
+
-- COPY w/ oids on a table w/o oids should fail
CREATE TABLE no_oids (
a int,
@@ -61,6 +79,7 @@ COPY no_oids FROM stdin WITH OIDS;
ERROR: COPY: table "no_oids" does not have OIDs
COPY no_oids TO stdout WITH OIDS;
ERROR: COPY: table "no_oids" does not have OIDs
+-- check copy out
COPY x TO stdout;
10000 21 31 41 before trigger fired
10001 22 32 42 before trigger fired
@@ -87,6 +106,19 @@ stuff after trigger fired
stuff after trigger fired
stuff after trigger fired
stuff after trigger fired
+COPY x (b, e) TO stdout WITH NULL 'I''m null';
+21 before trigger fired
+22 before trigger fired
+23 before trigger fired
+24 before trigger fired
+25 before trigger fired
+26 before trigger fired
+I'm null before trigger fired
+1 after trigger fired
+2 after trigger fired
+3 after trigger fired
+4 after trigger fired
+5 after trigger fired
DROP TABLE x;
DROP FUNCTION fn_x_before();
DROP FUNCTION fn_x_after();
diff --git a/src/test/regress/sql/alter_table.sql b/src/test/regress/sql/alter_table.sql
index f39998073d7..8946d2b15b3 100644
--- a/src/test/regress/sql/alter_table.sql
+++ b/src/test/regress/sql/alter_table.sql
@@ -571,3 +571,163 @@ select * from def_view_test;
drop rule def_view_test_ins on def_view_test;
drop view def_view_test;
drop table def_test;
+
+-- alter table / drop column tests
+-- try altering system catalogs, should fail
+alter table pg_class drop column relname;
+
+-- try altering non-existent table, should fail
+alter table foo drop column bar;
+
+-- test dropping columns
+create table atacc1 (a int4 not null, b int4, c int4 not null, d int4);
+insert into atacc1 values (1, 2, 3, 4);
+alter table atacc1 drop a;
+alter table atacc1 drop a;
+
+-- SELECTs
+select * from atacc1;
+select * from atacc1 order by a;
+select * from atacc1 order by "........pg.dropped.1........";
+select * from atacc1 group by a;
+select * from atacc1 group by "........pg.dropped.1........";
+select atacc1.* from atacc1;
+select a from atacc1;
+select atacc1.a from atacc1;
+select b,c,d from atacc1;
+select a,b,c,d from atacc1;
+select * from atacc1 where a = 1;
+select "........pg.dropped.1........" from atacc1;
+select atacc1."........pg.dropped.1........" from atacc1;
+select "........pg.dropped.1........",b,c,d from atacc1;
+select * from atacc1 where "........pg.dropped.1........" = 1;
+
+-- UPDATEs
+update atacc1 set a = 3;
+update atacc1 set b = 2 where a = 3;
+update atacc1 set "........pg.dropped.1........" = 3;
+update atacc1 set b = 2 where "........pg.dropped.1........" = 3;
+
+-- INSERTs
+insert into atacc1 values (10, 11, 12, 13);
+insert into atacc1 values (default, 11, 12, 13);
+insert into atacc1 values (11, 12, 13);
+insert into atacc1 (a) values (10);
+insert into atacc1 (a) values (default);
+insert into atacc1 (a,b,c,d) values (10,11,12,13);
+insert into atacc1 (a,b,c,d) values (default,11,12,13);
+insert into atacc1 (b,c,d) values (11,12,13);
+insert into atacc1 ("........pg.dropped.1........") values (10);
+insert into atacc1 ("........pg.dropped.1........") values (default);
+insert into atacc1 ("........pg.dropped.1........",b,c,d) values (10,11,12,13);
+insert into atacc1 ("........pg.dropped.1........",b,c,d) values (default,11,12,13);
+
+-- DELETEs
+delete from atacc1 where a = 3;
+delete from atacc1 where "........pg.dropped.1........" = 3;
+delete from atacc1;
+
+-- try dropping a non-existent column, should fail
+alter table atacc1 drop bar;
+
+-- try dropping the oid column, should fail
+alter table atacc1 drop oid;
+
+-- try creating a view and altering that, should fail
+create view myview as select * from atacc1;
+select * from myview;
+alter table myview drop d;
+drop view myview;
+
+-- test some commands to make sure they fail on the dropped column
+analyze atacc1(a);
+analyze atacc1("........pg.dropped.1........");
+vacuum analyze atacc1(a);
+vacuum analyze atacc1("........pg.dropped.1........");
+comment on column atacc1.a is 'testing';
+comment on column atacc1."........pg.dropped.1........" is 'testing';
+alter table atacc1 alter a set storage plain;
+alter table atacc1 alter "........pg.dropped.1........" set storage plain;
+alter table atacc1 alter a set statistics 0;
+alter table atacc1 alter "........pg.dropped.1........" set statistics 0;
+alter table atacc1 alter a set default 3;
+alter table atacc1 alter "........pg.dropped.1........" set default 3;
+alter table atacc1 alter a drop default;
+alter table atacc1 alter "........pg.dropped.1........" drop default;
+alter table atacc1 alter a set not null;
+alter table atacc1 alter "........pg.dropped.1........" set not null;
+alter table atacc1 alter a drop not null;
+alter table atacc1 alter "........pg.dropped.1........" drop not null;
+alter table atacc1 rename a to x;
+alter table atacc1 rename "........pg.dropped.1........" to x;
+alter table atacc1 add primary key(a);
+alter table atacc1 add primary key("........pg.dropped.1........");
+alter table atacc1 add unique(a);
+alter table atacc1 add unique("........pg.dropped.1........");
+alter table atacc1 add check (a > 3);
+alter table atacc1 add check ("........pg.dropped.1........" > 3);
+create table atacc2 (id int4 unique);
+alter table atacc1 add foreign key (a) references atacc2(id);
+alter table atacc1 add foreign key ("........pg.dropped.1........") references atacc2(id);
+alter table atacc2 add foreign key (id) references atacc1(a);
+alter table atacc2 add foreign key (id) references atacc1("........pg.dropped.1........");
+drop table atacc2;
+create index "testing_idx" on atacc1(a);
+create index "testing_idx" on atacc1("........pg.dropped.1........");
+
+-- test create as and select into
+insert into atacc1 values (21, 22, 23);
+create table test1 as select * from atacc1;
+select * from test1;
+drop table test1;
+select * into test2 from atacc1;
+select * from test2;
+drop table test2;
+
+-- try dropping all columns
+alter table atacc1 drop c;
+alter table atacc1 drop d;
+alter table atacc1 drop b;
+select * from atacc1;
+
+drop table atacc1;
+
+-- test inheritance
+create table parent (a int, b int, c int);
+insert into parent values (1, 2, 3);
+alter table parent drop a;
+create table child (d varchar(255)) inherits (parent);
+insert into child values (12, 13, 'testing');
+
+select * from parent;
+select * from child;
+alter table parent drop c;
+select * from parent;
+select * from child;
+
+drop table child;
+drop table parent;
+
+-- test copy in/out
+create table test (a int4, b int4, c int4);
+insert into test values (1,2,3);
+alter table test drop a;
+copy test to stdout;
+copy test(a) to stdout;
+copy test("........pg.dropped.1........") to stdout;
+copy test from stdin;
+10 11 12
+\.
+select * from test;
+copy test from stdin;
+21 22
+\.
+select * from test;
+copy test(a) from stdin;
+copy test("........pg.dropped.1........") from stdin;
+copy test(b,c) from stdin;
+31 32
+\.
+select * from test;
+drop table test;
+
diff --git a/src/test/regress/sql/copy2.sql b/src/test/regress/sql/copy2.sql
index b0ccfe67160..4f0d50247f1 100644
--- a/src/test/regress/sql/copy2.sql
+++ b/src/test/regress/sql/copy2.sql
@@ -76,6 +76,9 @@ COPY x (b, c, d, e) from stdin with oids delimiter ',' null 'x';
500000,x,45,80,90
\.
+-- check results of copy in
+SELECT * FROM x;
+
-- COPY w/ oids on a table w/o oids should fail
CREATE TABLE no_oids (
a int,
@@ -89,8 +92,11 @@ INSERT INTO no_oids (a, b) VALUES (20, 30);
COPY no_oids FROM stdin WITH OIDS;
COPY no_oids TO stdout WITH OIDS;
+-- check copy out
COPY x TO stdout;
COPY x (c, e) TO stdout;
+COPY x (b, e) TO stdout WITH NULL 'I''m null';
+
DROP TABLE x;
DROP FUNCTION fn_x_before();
DROP FUNCTION fn_x_after();