2009-01-21 08:09:22 +00:00
|
|
|
SET client_min_messages = warning;
|
|
|
|
|
2017-04-03 18:52:17 +09:00
|
|
|
SELECT col1, to_char("time", 'YYYY-MM-DD HH24:MI:SS'), ","")" FROM tbl_cluster ORDER BY 1, 2;
|
2009-01-23 02:33:11 +00:00
|
|
|
SELECT * FROM tbl_only_ckey ORDER BY 1;
|
|
|
|
SELECT * FROM tbl_only_pkey ORDER BY 1;
|
|
|
|
SELECT * FROM tbl_gistkey ORDER BY 1;
|
2011-04-29 05:06:48 +00:00
|
|
|
|
|
|
|
SET enable_seqscan = on;
|
|
|
|
SET enable_indexscan = off;
|
2017-04-03 18:52:17 +09:00
|
|
|
SELECT * FROM tbl_with_dropped_column ;
|
|
|
|
SELECT * FROM view_for_dropped_column ORDER BY 1, 2;
|
2011-04-29 05:06:48 +00:00
|
|
|
SELECT * FROM tbl_with_dropped_toast;
|
|
|
|
SET enable_seqscan = off;
|
|
|
|
SET enable_indexscan = on;
|
2017-04-03 18:52:17 +09:00
|
|
|
SELECT * FROM tbl_with_dropped_column ORDER BY 1, 2;
|
2011-04-29 05:06:48 +00:00
|
|
|
SELECT * FROM view_for_dropped_column;
|
2010-04-21 09:25:20 +00:00
|
|
|
SELECT * FROM tbl_with_dropped_toast;
|
2011-04-29 05:06:48 +00:00
|
|
|
RESET enable_seqscan;
|
|
|
|
RESET enable_indexscan;
|
2017-04-03 20:30:00 +09:00
|
|
|
-- check if storage option for both table and TOAST table didn't go away.
|
|
|
|
SELECT CASE relkind
|
|
|
|
WHEN 'r' THEN relname
|
|
|
|
WHEN 't' THEN 'toast_table'
|
|
|
|
END as table,
|
|
|
|
reloptions
|
|
|
|
FROM pg_class
|
2017-04-03 21:10:28 +09:00
|
|
|
WHERE relname = 'tbl_with_toast' OR relname = 'pg_toast_' || 'tbl_with_toast'::regclass::oid
|
|
|
|
ORDER BY 1;
|
2017-04-03 18:52:17 +09:00
|
|
|
SELECT pg_relation_size(reltoastrelid) = 0 as check_toast_rel_size FROM pg_class WHERE relname = 'tbl_with_mod_column_storage';
|
2010-04-21 09:25:20 +00:00
|
|
|
|
|
|
|
--
|
|
|
|
-- check broken links or orphan toast relations
|
|
|
|
--
|
|
|
|
SELECT oid, relname
|
|
|
|
FROM pg_class
|
|
|
|
WHERE relkind = 't'
|
|
|
|
AND oid NOT IN (SELECT reltoastrelid FROM pg_class WHERE relkind = 'r');
|
|
|
|
|
|
|
|
SELECT oid, relname
|
|
|
|
FROM pg_class
|
|
|
|
WHERE relkind = 'r'
|
|
|
|
AND reltoastrelid <> 0
|
|
|
|
AND reltoastrelid NOT IN (SELECT oid FROM pg_class WHERE relkind = 't');
|
2011-01-06 09:35:15 +00:00
|
|
|
|
2017-04-10 23:07:40 +01:00
|
|
|
-- check columns options
|
|
|
|
SELECT attname, attstattarget, attoptions
|
|
|
|
FROM pg_attribute
|
|
|
|
WHERE attrelid = 'tbl_idxopts'::regclass
|
|
|
|
AND attnum > 0
|
|
|
|
ORDER BY attnum;
|
|
|
|
|
2011-01-06 09:35:15 +00:00
|
|
|
--
|
|
|
|
-- NOT NULL UNIQUE
|
|
|
|
--
|
|
|
|
CREATE TABLE tbl_nn (col1 int NOT NULL, col2 int NOT NULL);
|
|
|
|
CREATE TABLE tbl_uk (col1 int NOT NULL, col2 int , UNIQUE(col1, col2));
|
|
|
|
CREATE TABLE tbl_nn_uk (col1 int NOT NULL, col2 int NOT NULL, UNIQUE(col1, col2));
|
|
|
|
CREATE TABLE tbl_pk_uk (col1 int NOT NULL, col2 int NOT NULL, PRIMARY KEY(col1, col2), UNIQUE(col2, col1));
|
2012-11-15 00:16:38 +00:00
|
|
|
CREATE TABLE tbl_nn_puk (col1 int NOT NULL, col2 int NOT NULL);
|
|
|
|
CREATE UNIQUE INDEX tbl_nn_puk_pcol1_idx ON tbl_nn_puk(col1) WHERE col1 < 10;
|
2013-04-17 01:42:22 +01:00
|
|
|
\! pg_repack --dbname=contrib_regression --table=tbl_nn
|
2012-12-06 21:26:12 -07:00
|
|
|
-- => WARNING
|
2013-04-17 01:42:22 +01:00
|
|
|
\! pg_repack --dbname=contrib_regression --table=tbl_uk
|
2012-12-06 21:26:12 -07:00
|
|
|
-- => WARNING
|
2013-04-17 01:42:22 +01:00
|
|
|
\! pg_repack --dbname=contrib_regression --table=tbl_nn_uk
|
2011-01-06 09:35:15 +00:00
|
|
|
-- => OK
|
2013-04-17 01:42:22 +01:00
|
|
|
\! pg_repack --dbname=contrib_regression --table=tbl_pk_uk
|
2011-01-06 09:35:15 +00:00
|
|
|
-- => OK
|
2014-05-24 00:09:03 -04:00
|
|
|
\! pg_repack --dbname=contrib_regression --table=tbl_pk_uk --only-indexes
|
|
|
|
-- => OK
|
2013-04-17 01:42:22 +01:00
|
|
|
\! pg_repack --dbname=contrib_regression --table=tbl_nn_puk
|
2012-12-06 21:26:12 -07:00
|
|
|
-- => WARNING
|
2013-04-18 01:22:24 +01:00
|
|
|
|
|
|
|
--
|
|
|
|
-- Triggers handling
|
|
|
|
--
|
|
|
|
CREATE FUNCTION trgtest() RETURNS trigger AS
|
|
|
|
$$BEGIN RETURN NEW; END$$
|
|
|
|
LANGUAGE plpgsql;
|
|
|
|
CREATE TABLE trg1 (id integer PRIMARY KEY);
|
2017-01-24 14:09:05 +09:00
|
|
|
CREATE TRIGGER repack_trigger_1 AFTER UPDATE ON trg1 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
2013-04-18 01:22:24 +01:00
|
|
|
\! pg_repack --dbname=contrib_regression --table=trg1
|
|
|
|
CREATE TABLE trg2 (id integer PRIMARY KEY);
|
2017-01-24 14:09:05 +09:00
|
|
|
CREATE TRIGGER repack_trigger AFTER UPDATE ON trg2 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
2013-04-18 01:22:24 +01:00
|
|
|
\! pg_repack --dbname=contrib_regression --table=trg2
|
|
|
|
CREATE TABLE trg3 (id integer PRIMARY KEY);
|
2017-01-24 14:09:05 +09:00
|
|
|
CREATE TRIGGER repack_trigger_1 BEFORE UPDATE ON trg3 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
2013-04-18 01:22:24 +01:00
|
|
|
\! pg_repack --dbname=contrib_regression --table=trg3
|
2014-01-30 12:53:48 +00:00
|
|
|
|
2017-08-05 02:31:47 +09:00
|
|
|
--
|
|
|
|
-- Table re-organization using specific column
|
|
|
|
--
|
|
|
|
|
|
|
|
-- reorganize table using cluster key. Sort in ascending order.
|
|
|
|
\! pg_repack --dbname=contrib_regression --table=tbl_order
|
|
|
|
SELECT ctid, c FROM tbl_order WHERE ctid <= '(0,10)';
|
|
|
|
|
|
|
|
-- reorganize table using specific column order. Sort in descending order.
|
|
|
|
\! pg_repack --dbname=contrib_regression --table=tbl_order -o "c DESC"
|
|
|
|
SELECT ctid, c FROM tbl_order WHERE ctid <= '(0,10)';
|
|
|
|
|
|
|
|
|
2014-01-30 12:53:48 +00:00
|
|
|
--
|
|
|
|
-- Dry run
|
|
|
|
--
|
|
|
|
\! pg_repack --dbname=contrib_regression --table=tbl_cluster --dry-run
|
2014-05-24 15:42:24 -04:00
|
|
|
|
2014-01-31 08:22:12 +00:00
|
|
|
-- Test --schema
|
2014-01-30 12:19:21 +00:00
|
|
|
--
|
2014-01-30 12:27:32 +00:00
|
|
|
CREATE SCHEMA test_schema1;
|
|
|
|
CREATE TABLE test_schema1.tbl1 (id INTEGER PRIMARY KEY);
|
|
|
|
CREATE TABLE test_schema1.tbl2 (id INTEGER PRIMARY KEY);
|
|
|
|
CREATE SCHEMA test_schema2;
|
|
|
|
CREATE TABLE test_schema2.tbl1 (id INTEGER PRIMARY KEY);
|
|
|
|
CREATE TABLE test_schema2.tbl2 (id INTEGER PRIMARY KEY);
|
2014-01-31 08:22:12 +00:00
|
|
|
-- => OK
|
|
|
|
\! pg_repack --dbname=contrib_regression --schema=test_schema1
|
|
|
|
-- => OK
|
2014-01-30 12:27:32 +00:00
|
|
|
\! pg_repack --dbname=contrib_regression --schema=test_schema1 --schema=test_schema2
|
2014-01-31 08:22:12 +00:00
|
|
|
-- => ERROR
|
|
|
|
\! pg_repack --dbname=contrib_regression --schema=test_schema1 --table=tbl1
|
|
|
|
-- => ERROR
|
|
|
|
\! pg_repack --dbname=contrib_regression --all --schema=test_schema1
|
2017-01-19 18:26:13 +09:00
|
|
|
|
|
|
|
--
|
|
|
|
-- don't kill backend
|
|
|
|
--
|
2017-02-22 03:49:04 +00:00
|
|
|
\! pg_repack --dbname=contrib_regression --table=tbl_cluster --no-kill-backend
|
2017-03-02 02:58:41 +00:00
|
|
|
|
2017-03-23 16:26:46 +03:00
|
|
|
--
|
|
|
|
-- exclude extension check
|
|
|
|
--
|
|
|
|
CREATE SCHEMA exclude_extension_schema;
|
|
|
|
CREATE TABLE exclude_extension_schema.tbl(val integer primary key);
|
|
|
|
-- => ERROR
|
|
|
|
\! pg_repack --dbname=contrib_regression --table=dummy_table --exclude-extension=dummy_extension
|
|
|
|
-- => ERROR
|
|
|
|
\! pg_repack --dbname=contrib_regression --table=dummy_table --exclude-extension=dummy_extension -x
|
|
|
|
-- => ERROR
|
|
|
|
\! pg_repack --dbname=contrib_regression --index=dummy_index --exclude-extension=dummy_extension
|
|
|
|
-- => OK
|
|
|
|
\! pg_repack --dbname=contrib_regression --schema=exclude_extension_schema --exclude-extension=dummy_extension
|
|
|
|
-- => OK
|
|
|
|
\! pg_repack --dbname=contrib_regression --schema=exclude_extension_schema --exclude-extension=dummy_extension --exclude-extension=dummy_extension
|
2017-03-24 16:54:16 +03:00
|
|
|
|
2017-03-22 15:04:27 +03:00
|
|
|
--
|
|
|
|
-- table inheritance check
|
|
|
|
--
|
|
|
|
CREATE TABLE parent_a(val integer primary key);
|
|
|
|
CREATE TABLE child_a_1(val integer primary key) INHERITS(parent_a);
|
|
|
|
CREATE TABLE child_a_2(val integer primary key) INHERITS(parent_a);
|
|
|
|
CREATE TABLE parent_b(val integer primary key);
|
|
|
|
CREATE TABLE child_b_1(val integer primary key) INHERITS(parent_b);
|
|
|
|
CREATE TABLE child_b_2(val integer primary key) INHERITS(parent_b);
|
|
|
|
-- => ERROR
|
|
|
|
\! pg_repack --dbname=contrib_regression --parent-table=dummy_table
|
|
|
|
-- => ERROR
|
|
|
|
\! pg_repack --dbname=contrib_regression --parent-table=dummy_index --index=dummy_index
|
|
|
|
-- => ERROR
|
|
|
|
\! pg_repack --dbname=contrib_regression --parent-table=dummy_table --schema=dummy_schema
|
|
|
|
-- => ERROR
|
|
|
|
\! pg_repack --dbname=contrib_regression --parent-table=dummy_table --all
|
|
|
|
-- => OK
|
|
|
|
\! pg_repack --dbname=contrib_regression --table=parent_a --parent-table=parent_b
|
|
|
|
-- => OK
|
|
|
|
\! pg_repack --dbname=contrib_regression --parent-table=parent_a --parent-table=parent_b
|
|
|
|
-- => OK
|
|
|
|
\! pg_repack --dbname=contrib_regression --table=parent_a --parent-table=parent_b --only-indexes
|
|
|
|
-- => OK
|
|
|
|
\! pg_repack --dbname=contrib_regression --parent-table=parent_a --parent-table=parent_b --only-indexes
|