-- -- Test cases for COPY (select) TO -- create table test1 (id serial, t text); insert into test1 (t) values ('a'); insert into test1 (t) values ('b'); insert into test1 (t) values ('c'); insert into test1 (t) values ('d'); insert into test1 (t) values ('e'); create table test2 (id serial, t text); insert into test2 (t) values ('A'); insert into test2 (t) values ('B'); insert into test2 (t) values ('C'); insert into test2 (t) values ('D'); insert into test2 (t) values ('E'); create view v_test1 as select 'v_'||t from test1; -- -- Test COPY table TO -- copy test1 to stdout; -- -- This should fail -- copy v_test1 to stdout; -- -- Test COPY (select) TO -- copy (select t from test1 where id=1) to stdout; -- -- Test COPY (select for update) TO -- copy (select t from test1 where id=3 for update) to stdout; -- -- This should fail -- copy (select t into temp test3 from test1 where id=3) to stdout; -- -- This should fail -- copy (select * from test1) from stdin; -- -- This should fail -- copy (select * from test1) (t,id) to stdout; -- -- Test JOIN -- copy (select * from test1 join test2 using (id)) to stdout; -- -- Test UNION SELECT -- copy (select t from test1 where id = 1 UNION select * from v_test1 ORDER BY 1) to stdout; -- -- Test subselect -- copy (select * from (select t from test1 where id = 1 UNION select * from v_test1 ORDER BY 1) t1) to stdout; -- -- Test headers, CSV and quotes -- copy (select t from test1 where id = 1) to stdout csv header force quote t; -- -- Test psql builtins, plain table -- \copy test1 to stdout -- -- This should fail -- \copy v_test1 to stdout -- -- Test \copy (select ...) -- \copy (select "id",'id','id""'||t,(id + 1)*id,t,"test1"."t" from test1 where id=3) to stdout -- -- Drop everything -- drop table test2; drop view v_test1; drop table test1;