diff options
Diffstat (limited to '')
-rw-r--r-- | src/test/regress/expected/copydml.out | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/src/test/regress/expected/copydml.out b/src/test/regress/expected/copydml.out new file mode 100644 index 0000000..b5a2256 --- /dev/null +++ b/src/test/regress/expected/copydml.out @@ -0,0 +1,112 @@ +-- +-- Test cases for COPY (INSERT/UPDATE/DELETE) TO +-- +create table copydml_test (id serial, t text); +insert into copydml_test (t) values ('a'); +insert into copydml_test (t) values ('b'); +insert into copydml_test (t) values ('c'); +insert into copydml_test (t) values ('d'); +insert into copydml_test (t) values ('e'); +-- +-- Test COPY (insert/update/delete ...) +-- +copy (insert into copydml_test (t) values ('f') returning id) to stdout; +6 +copy (update copydml_test set t = 'g' where t = 'f' returning id) to stdout; +6 +copy (delete from copydml_test where t = 'g' returning id) to stdout; +6 +-- +-- Test \copy (insert/update/delete ...) +-- +\copy (insert into copydml_test (t) values ('f') returning id) to stdout; +7 +\copy (update copydml_test set t = 'g' where t = 'f' returning id) to stdout; +7 +\copy (delete from copydml_test where t = 'g' returning id) to stdout; +7 +-- Error cases +copy (insert into copydml_test default values) to stdout; +ERROR: COPY query must have a RETURNING clause +copy (update copydml_test set t = 'g') to stdout; +ERROR: COPY query must have a RETURNING clause +copy (delete from copydml_test) to stdout; +ERROR: COPY query must have a RETURNING clause +create rule qqq as on insert to copydml_test do instead nothing; +copy (insert into copydml_test default values) to stdout; +ERROR: DO INSTEAD NOTHING rules are not supported for COPY +drop rule qqq on copydml_test; +create rule qqq as on insert to copydml_test do also delete from copydml_test; +copy (insert into copydml_test default values) to stdout; +ERROR: DO ALSO rules are not supported for the COPY +drop rule qqq on copydml_test; +create rule qqq as on insert to copydml_test do instead (delete from copydml_test; delete from copydml_test); +copy (insert into copydml_test default values) to stdout; +ERROR: multi-statement DO INSTEAD rules are not supported for COPY +drop rule qqq on copydml_test; +create rule qqq as on insert to copydml_test where new.t <> 'f' do instead delete from copydml_test; +copy (insert into copydml_test default values) to stdout; +ERROR: conditional DO INSTEAD rules are not supported for COPY +drop rule qqq on copydml_test; +create rule qqq as on update to copydml_test do instead nothing; +copy (update copydml_test set t = 'f') to stdout; +ERROR: DO INSTEAD NOTHING rules are not supported for COPY +drop rule qqq on copydml_test; +create rule qqq as on update to copydml_test do also delete from copydml_test; +copy (update copydml_test set t = 'f') to stdout; +ERROR: DO ALSO rules are not supported for the COPY +drop rule qqq on copydml_test; +create rule qqq as on update to copydml_test do instead (delete from copydml_test; delete from copydml_test); +copy (update copydml_test set t = 'f') to stdout; +ERROR: multi-statement DO INSTEAD rules are not supported for COPY +drop rule qqq on copydml_test; +create rule qqq as on update to copydml_test where new.t <> 'f' do instead delete from copydml_test; +copy (update copydml_test set t = 'f') to stdout; +ERROR: conditional DO INSTEAD rules are not supported for COPY +drop rule qqq on copydml_test; +create rule qqq as on delete to copydml_test do instead nothing; +copy (delete from copydml_test) to stdout; +ERROR: DO INSTEAD NOTHING rules are not supported for COPY +drop rule qqq on copydml_test; +create rule qqq as on delete to copydml_test do also insert into copydml_test default values; +copy (delete from copydml_test) to stdout; +ERROR: DO ALSO rules are not supported for the COPY +drop rule qqq on copydml_test; +create rule qqq as on delete to copydml_test do instead (insert into copydml_test default values; insert into copydml_test default values); +copy (delete from copydml_test) to stdout; +ERROR: multi-statement DO INSTEAD rules are not supported for COPY +drop rule qqq on copydml_test; +create rule qqq as on delete to copydml_test where old.t <> 'f' do instead insert into copydml_test default values; +copy (delete from copydml_test) to stdout; +ERROR: conditional DO INSTEAD rules are not supported for COPY +drop rule qqq on copydml_test; +-- triggers +create function qqq_trig() returns trigger as $$ +begin +if tg_op in ('INSERT', 'UPDATE') then + raise notice '% % %', tg_when, tg_op, new.id; + return new; +else + raise notice '% % %', tg_when, tg_op, old.id; + return old; +end if; +end +$$ language plpgsql; +create trigger qqqbef before insert or update or delete on copydml_test + for each row execute procedure qqq_trig(); +create trigger qqqaf after insert or update or delete on copydml_test + for each row execute procedure qqq_trig(); +copy (insert into copydml_test (t) values ('f') returning id) to stdout; +NOTICE: BEFORE INSERT 8 +8 +NOTICE: AFTER INSERT 8 +copy (update copydml_test set t = 'g' where t = 'f' returning id) to stdout; +NOTICE: BEFORE UPDATE 8 +8 +NOTICE: AFTER UPDATE 8 +copy (delete from copydml_test where t = 'g' returning id) to stdout; +NOTICE: BEFORE DELETE 8 +8 +NOTICE: AFTER DELETE 8 +drop table copydml_test; +drop function qqq_trig(); |