Clean up tests and fix regression

It was possible to specify both --schema and --table which probably
-should- be legal but would need some code to be rewritten. This patch
adds a check that both can't be specified and returns an error telling
the user to use schema.table notation instead. A regression test
checking this behaviour was added.
This commit is contained in:
Steeve Lennmark 2014-01-31 08:22:12 +00:00
parent 9b381f5b85
commit f094795178
3 changed files with 27 additions and 15 deletions

View File

@ -305,6 +305,11 @@ main(int argc, char *argv[])
} }
else else
{ {
if (schema_list.head && table_list.head)
ereport(ERROR,
(errcode(EINVAL),
errmsg("cannot repack specific table(s) in schema, use schema.table notation instead")));
if (noorder) if (noorder)
orderby = ""; orderby = "";

View File

@ -353,22 +353,27 @@ CREATE TRIGGER zzzzzz AFTER UPDATE ON trg4 FOR EACH ROW EXECUTE PROCEDURE trgtes
\! pg_repack --dbname=contrib_regression --table=trg4 \! pg_repack --dbname=contrib_regression --table=trg4
INFO: repacking table "trg4" INFO: repacking table "trg4"
-- --
-- Repack single schema -- Test --schema
-- --
CREATE SCHEMA test_schema1; CREATE SCHEMA test_schema1;
CREATE TABLE test_schema1.tbl1 (id INTEGER PRIMARY KEY); CREATE TABLE test_schema1.tbl1 (id INTEGER PRIMARY KEY);
CREATE TABLE test_schema1.tbl2 (id INTEGER PRIMARY KEY); CREATE TABLE test_schema1.tbl2 (id INTEGER PRIMARY KEY);
\! pg_repack --dbname=contrib_regression --schema=test_schema1
INFO: repacking table "test_schema1.tbl1"
INFO: repacking table "test_schema1.tbl2"
--
-- Repack two schemas
--
CREATE SCHEMA test_schema2; CREATE SCHEMA test_schema2;
CREATE TABLE test_schema2.tbl1 (id INTEGER PRIMARY KEY); CREATE TABLE test_schema2.tbl1 (id INTEGER PRIMARY KEY);
CREATE TABLE test_schema2.tbl2 (id INTEGER PRIMARY KEY); CREATE TABLE test_schema2.tbl2 (id INTEGER PRIMARY KEY);
\! pg_repack --dbname=contrib_regression --schema=test_schema1 --schema=test_schema2 -- => OK
INFO: repacking table "test_schema2.tbl1" \! pg_repack --dbname=contrib_regression --schema=test_schema1
INFO: repacking table "test_schema1.tbl1" INFO: repacking table "test_schema1.tbl1"
INFO: repacking table "test_schema1.tbl2" INFO: repacking table "test_schema1.tbl2"
-- => OK
\! pg_repack --dbname=contrib_regression --schema=test_schema1 --schema=test_schema2
INFO: repacking table "test_schema2.tbl1"
INFO: repacking table "test_schema2.tbl2" INFO: repacking table "test_schema2.tbl2"
INFO: repacking table "test_schema1.tbl2"
INFO: repacking table "test_schema1.tbl1"
-- => ERROR
\! pg_repack --dbname=contrib_regression --schema=test_schema1 --table=tbl1
ERROR: cannot repack specific table(s) in schema, use schema.table notation instead
-- => ERROR
\! pg_repack --dbname=contrib_regression --all --schema=test_schema1
ERROR: cannot repack specific schema(s) in all databases

View File

@ -208,17 +208,19 @@ CREATE TRIGGER zzzzzz AFTER UPDATE ON trg4 FOR EACH ROW EXECUTE PROCEDURE trgtes
\! pg_repack --dbname=contrib_regression --table=trg4 \! pg_repack --dbname=contrib_regression --table=trg4
-- --
-- Repack single schema -- Test --schema
-- --
CREATE SCHEMA test_schema1; CREATE SCHEMA test_schema1;
CREATE TABLE test_schema1.tbl1 (id INTEGER PRIMARY KEY); CREATE TABLE test_schema1.tbl1 (id INTEGER PRIMARY KEY);
CREATE TABLE test_schema1.tbl2 (id INTEGER PRIMARY KEY); CREATE TABLE test_schema1.tbl2 (id INTEGER PRIMARY KEY);
\! pg_repack --dbname=contrib_regression --schema=test_schema1
--
-- Repack two schemas
--
CREATE SCHEMA test_schema2; CREATE SCHEMA test_schema2;
CREATE TABLE test_schema2.tbl1 (id INTEGER PRIMARY KEY); CREATE TABLE test_schema2.tbl1 (id INTEGER PRIMARY KEY);
CREATE TABLE test_schema2.tbl2 (id INTEGER PRIMARY KEY); CREATE TABLE test_schema2.tbl2 (id INTEGER PRIMARY KEY);
-- => OK
\! pg_repack --dbname=contrib_regression --schema=test_schema1
-- => OK
\! pg_repack --dbname=contrib_regression --schema=test_schema1 --schema=test_schema2 \! pg_repack --dbname=contrib_regression --schema=test_schema1 --schema=test_schema2
-- => ERROR
\! pg_repack --dbname=contrib_regression --schema=test_schema1 --table=tbl1
-- => ERROR
\! pg_repack --dbname=contrib_regression --all --schema=test_schema1