mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-04 18:06:51 +02:00
2d1d96b1ce
but seem like a separate patch since most of the remaining work is on the executor side.) I took the opportunity to push selection of the grouping operators for set operations into the parser where it belongs. Otherwise this is just a small exercise in making prepunion.c consider both alternatives. As with the recent DISTINCT patch, this means we can UNION on datatypes that can hash but not sort, and it means that UNION without ORDER BY is no longer certain to produce sorted output.
83 lines
1.8 KiB
SQL
83 lines
1.8 KiB
SQL
--
|
|
-- 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;
|