diff options
author | Tomas Vondra | 2017-05-06 23:55:41 +0000 |
---|---|---|
committer | Tomas Vondra | 2017-05-06 23:55:41 +0000 |
commit | 4bb0143f15ab1aa81769428f917f947a043ac475 (patch) | |
tree | 48d0fd7bf8eb27482c6a79754eaeb319a549cdbb | |
parent | 1e3d451d2f9559ed4fe390e36a0e13b93c62b560 (diff) |
Resolve failures in truncate regression test suite
The failures were caused by triggers and RESTART IDENTITY, two features
not yet supported in Postgres-XL. Instead of adding the errors messages
to expected output (which is what XL9_5_STABLE does), I have removed
the relevant blocks.
The reason is that the tests did nothing useful. The basic TRUNCATE
functionality is tested by the preceding tests, and there are other
test suites verifying that triggers are indeed still unsupported.
The RESTART IDENTITY is a bit of an exception, as it was only tested
here, so to ensure we keep returning a 'not supported' error I've added
a simple test into xl_limitations test suite.
-rw-r--r-- | src/test/regress/expected/truncate.out | 139 | ||||
-rwxr-xr-x | src/test/regress/expected/xl_limitations.out | 9 | ||||
-rw-r--r-- | src/test/regress/sql/truncate.sql | 89 | ||||
-rwxr-xr-x | src/test/regress/sql/xl_limitations.sql | 8 |
4 files changed, 16 insertions, 229 deletions
diff --git a/src/test/regress/expected/truncate.out b/src/test/regress/expected/truncate.out index 1df0fc98db..17b6708336 100644 --- a/src/test/regress/expected/truncate.out +++ b/src/test/regress/expected/truncate.out @@ -281,142 +281,3 @@ NOTICE: drop cascades to 3 other objects DETAIL: drop cascades to table trunc_fa drop cascades to table trunc_faa drop cascades to table trunc_fb --- Test ON TRUNCATE triggers -CREATE TABLE trunc_trigger_test (f1 int, f2 text, f3 text); -CREATE TABLE trunc_trigger_log (tgop text, tglevel text, tgwhen text, - tgargv text, tgtable name, rowcount bigint); -CREATE FUNCTION trunctrigger() RETURNS trigger as $$ -declare c bigint; -begin - execute 'select count(*) from ' || quote_ident(tg_table_name) into c; - insert into trunc_trigger_log values - (TG_OP, TG_LEVEL, TG_WHEN, TG_ARGV[0], tg_table_name, c); - return null; -end; -$$ LANGUAGE plpgsql; --- basic before trigger -INSERT INTO trunc_trigger_test VALUES(1, 'foo', 'bar'), (2, 'baz', 'quux'); -CREATE TRIGGER t -BEFORE TRUNCATE ON trunc_trigger_test -FOR EACH STATEMENT -EXECUTE PROCEDURE trunctrigger('before trigger truncate'); -SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; - Row count in test table -------------------------- - 2 -(1 row) - -SELECT * FROM trunc_trigger_log; - tgop | tglevel | tgwhen | tgargv | tgtable | rowcount -------+---------+--------+--------+---------+---------- -(0 rows) - -TRUNCATE trunc_trigger_test; -SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; - Row count in test table -------------------------- - 0 -(1 row) - -SELECT * FROM trunc_trigger_log; - tgop | tglevel | tgwhen | tgargv | tgtable | rowcount -----------+-----------+--------+-------------------------+--------------------+---------- - TRUNCATE | STATEMENT | BEFORE | before trigger truncate | trunc_trigger_test | 2 -(1 row) - -DROP TRIGGER t ON trunc_trigger_test; -truncate trunc_trigger_log; --- same test with an after trigger -INSERT INTO trunc_trigger_test VALUES(1, 'foo', 'bar'), (2, 'baz', 'quux'); -CREATE TRIGGER tt -AFTER TRUNCATE ON trunc_trigger_test -FOR EACH STATEMENT -EXECUTE PROCEDURE trunctrigger('after trigger truncate'); -SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; - Row count in test table -------------------------- - 2 -(1 row) - -SELECT * FROM trunc_trigger_log; - tgop | tglevel | tgwhen | tgargv | tgtable | rowcount -------+---------+--------+--------+---------+---------- -(0 rows) - -TRUNCATE trunc_trigger_test; -SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; - Row count in test table -------------------------- - 0 -(1 row) - -SELECT * FROM trunc_trigger_log; - tgop | tglevel | tgwhen | tgargv | tgtable | rowcount -----------+-----------+--------+------------------------+--------------------+---------- - TRUNCATE | STATEMENT | AFTER | after trigger truncate | trunc_trigger_test | 0 -(1 row) - -DROP TABLE trunc_trigger_test; -DROP TABLE trunc_trigger_log; -DROP FUNCTION trunctrigger(); --- test TRUNCATE ... RESTART IDENTITY -CREATE SEQUENCE truncate_a_id1 START WITH 33; -CREATE TABLE truncate_a (id serial, - id1 integer default nextval('truncate_a_id1')); -ALTER SEQUENCE truncate_a_id1 OWNED BY truncate_a.id1; -INSERT INTO truncate_a DEFAULT VALUES; -INSERT INTO truncate_a DEFAULT VALUES; -SELECT * FROM truncate_a ORDER BY id; - id | id1 -----+----- - 1 | 33 - 2 | 34 -(2 rows) - -TRUNCATE truncate_a; -INSERT INTO truncate_a DEFAULT VALUES; -INSERT INTO truncate_a DEFAULT VALUES; -SELECT * FROM truncate_a ORDER BY id; - id | id1 -----+----- - 3 | 35 - 4 | 36 -(2 rows) - -TRUNCATE truncate_a RESTART IDENTITY; -INSERT INTO truncate_a DEFAULT VALUES; -INSERT INTO truncate_a DEFAULT VALUES; -SELECT * FROM truncate_a ORDER BY id; - id | id1 -----+----- - 1 | 33 - 2 | 34 -(2 rows) - --- check rollback of a RESTART IDENTITY operation -BEGIN; -TRUNCATE truncate_a RESTART IDENTITY; -INSERT INTO truncate_a DEFAULT VALUES; -SELECT * FROM truncate_a; - id | id1 -----+----- - 1 | 33 -(1 row) - -ROLLBACK; -INSERT INTO truncate_a DEFAULT VALUES; -INSERT INTO truncate_a DEFAULT VALUES; -SELECT * FROM truncate_a; - id | id1 -----+----- - 1 | 33 - 2 | 34 - 3 | 35 - 4 | 36 -(4 rows) - -DROP TABLE truncate_a; -SELECT nextval('truncate_a_id1'); -- fail, seq should have been dropped -ERROR: relation "truncate_a_id1" does not exist -LINE 1: SELECT nextval('truncate_a_id1'); - ^ diff --git a/src/test/regress/expected/xl_limitations.out b/src/test/regress/expected/xl_limitations.out index 24a7b86b42..c857502d3c 100755 --- a/src/test/regress/expected/xl_limitations.out +++ b/src/test/regress/expected/xl_limitations.out @@ -786,3 +786,12 @@ SELECT pg_notify('fo' || 'o', 'pay' || 'load'); drop function xl_room_au(); drop function xl_trap_zero_divide(int); drop function xl_nodename_from_id(integer); +-- TRUNCATE ... RESTART IDENTITY +CREATE SEQUENCE truncate_a_id1 START WITH 33; +CREATE TABLE truncate_a (id serial, + id1 integer default nextval('truncate_a_id1')); +ALTER SEQUENCE truncate_a_id1 OWNED BY truncate_a.id1; +TRUNCATE truncate_a RESTART IDENTITY; +ERROR: PGXC does not support RESTART IDENTITY yet +DETAIL: The feature is not supported currently +DROP TABLE truncate_a; diff --git a/src/test/regress/sql/truncate.sql b/src/test/regress/sql/truncate.sql index 0c8b88ace6..775a857e2f 100644 --- a/src/test/regress/sql/truncate.sql +++ b/src/test/regress/sql/truncate.sql @@ -126,92 +126,3 @@ SELECT * FROM trunc_faa ORDER BY 1, 2; ROLLBACK; DROP TABLE trunc_f CASCADE; - --- Test ON TRUNCATE triggers - -CREATE TABLE trunc_trigger_test (f1 int, f2 text, f3 text); -CREATE TABLE trunc_trigger_log (tgop text, tglevel text, tgwhen text, - tgargv text, tgtable name, rowcount bigint); - -CREATE FUNCTION trunctrigger() RETURNS trigger as $$ -declare c bigint; -begin - execute 'select count(*) from ' || quote_ident(tg_table_name) into c; - insert into trunc_trigger_log values - (TG_OP, TG_LEVEL, TG_WHEN, TG_ARGV[0], tg_table_name, c); - return null; -end; -$$ LANGUAGE plpgsql; - --- basic before trigger -INSERT INTO trunc_trigger_test VALUES(1, 'foo', 'bar'), (2, 'baz', 'quux'); - -CREATE TRIGGER t -BEFORE TRUNCATE ON trunc_trigger_test -FOR EACH STATEMENT -EXECUTE PROCEDURE trunctrigger('before trigger truncate'); - -SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; -SELECT * FROM trunc_trigger_log; -TRUNCATE trunc_trigger_test; -SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; -SELECT * FROM trunc_trigger_log; - -DROP TRIGGER t ON trunc_trigger_test; - -truncate trunc_trigger_log; - --- same test with an after trigger -INSERT INTO trunc_trigger_test VALUES(1, 'foo', 'bar'), (2, 'baz', 'quux'); - -CREATE TRIGGER tt -AFTER TRUNCATE ON trunc_trigger_test -FOR EACH STATEMENT -EXECUTE PROCEDURE trunctrigger('after trigger truncate'); - -SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; -SELECT * FROM trunc_trigger_log; -TRUNCATE trunc_trigger_test; -SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; -SELECT * FROM trunc_trigger_log; - -DROP TABLE trunc_trigger_test; -DROP TABLE trunc_trigger_log; - -DROP FUNCTION trunctrigger(); - --- test TRUNCATE ... RESTART IDENTITY -CREATE SEQUENCE truncate_a_id1 START WITH 33; -CREATE TABLE truncate_a (id serial, - id1 integer default nextval('truncate_a_id1')); -ALTER SEQUENCE truncate_a_id1 OWNED BY truncate_a.id1; - -INSERT INTO truncate_a DEFAULT VALUES; -INSERT INTO truncate_a DEFAULT VALUES; -SELECT * FROM truncate_a ORDER BY id; - -TRUNCATE truncate_a; - -INSERT INTO truncate_a DEFAULT VALUES; -INSERT INTO truncate_a DEFAULT VALUES; -SELECT * FROM truncate_a ORDER BY id; - -TRUNCATE truncate_a RESTART IDENTITY; - -INSERT INTO truncate_a DEFAULT VALUES; -INSERT INTO truncate_a DEFAULT VALUES; -SELECT * FROM truncate_a ORDER BY id; - --- check rollback of a RESTART IDENTITY operation -BEGIN; -TRUNCATE truncate_a RESTART IDENTITY; -INSERT INTO truncate_a DEFAULT VALUES; -SELECT * FROM truncate_a; -ROLLBACK; -INSERT INTO truncate_a DEFAULT VALUES; -INSERT INTO truncate_a DEFAULT VALUES; -SELECT * FROM truncate_a; - -DROP TABLE truncate_a; - -SELECT nextval('truncate_a_id1'); -- fail, seq should have been dropped diff --git a/src/test/regress/sql/xl_limitations.sql b/src/test/regress/sql/xl_limitations.sql index 9dfe97c7d4..5114e52cc4 100755 --- a/src/test/regress/sql/xl_limitations.sql +++ b/src/test/regress/sql/xl_limitations.sql @@ -454,4 +454,10 @@ drop function xl_room_au(); drop function xl_trap_zero_divide(int); drop function xl_nodename_from_id(integer); - +-- TRUNCATE ... RESTART IDENTITY +CREATE SEQUENCE truncate_a_id1 START WITH 33; +CREATE TABLE truncate_a (id serial, + id1 integer default nextval('truncate_a_id1')); +ALTER SEQUENCE truncate_a_id1 OWNED BY truncate_a.id1; +TRUNCATE truncate_a RESTART IDENTITY; +DROP TABLE truncate_a; |