diff options
| author | Michael Paquier | 2019-05-09 23:18:46 +0000 |
|---|---|---|
| committer | Michael Paquier | 2019-05-09 23:18:46 +0000 |
| commit | 508300e2e141a9fd87758ce01374c5b0597986fd (patch) | |
| tree | 1772248fd66b1fe83e98c0d741c9aa33d0884f29 /src/test | |
| parent | 24c19e9f66863d83009a370604e40b1eaa71bcdd (diff) | |
Improve and fix some error handling for REINDEX INDEX/TABLE CONCURRENTLY
This improves the user experience when it comes to restrict several
flavors of REINDEX CONCURRENTLY. First, for INDEX, remove a restriction
on shared relations as we already check after catalog relations. Then,
for TABLE, add a proper error message when attempting to run the command
on system catalogs. The code path of CREATE INDEX CONCURRENTLY already
complains about that, but if a REINDEX is issued then then the error
generated is confusing.
While on it, add more tests to check restrictions on catalog indexes and
on toast table/index for catalogs. Some error messages are improved,
with wording suggestion coming from Tom Lane.
Reported-by: Tom Lane
Author: Michael Paquier
Reviewed-by: Tom Lane
Discussion: https://postgr.es/m/[email protected]
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/create_index.out | 17 | ||||
| -rw-r--r-- | src/test/regress/sql/create_index.sql | 7 |
2 files changed, 16 insertions, 8 deletions
diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out index 326dc441776..c8bc6be0613 100644 --- a/src/test/regress/expected/create_index.out +++ b/src/test/regress/expected/create_index.out @@ -1967,7 +1967,7 @@ INSERT INTO concur_reindex_tab3 VALUES (3, '[1,2]'); REINDEX INDEX CONCURRENTLY concur_reindex_tab3_c2_excl; -- error ERROR: concurrent index creation for exclusion constraints is not supported REINDEX TABLE CONCURRENTLY concur_reindex_tab3; -- succeeds with warning -WARNING: cannot reindex concurrently exclusion constraint index "public.concur_reindex_tab3_c2_excl", skipping +WARNING: cannot reindex exclusion constraint index "public.concur_reindex_tab3_c2_excl" concurrently, skipping INSERT INTO concur_reindex_tab3 VALUES (4, '[2,4]'); ERROR: conflicting key value violates exclusion constraint "concur_reindex_tab3_c2_excl" DETAIL: Key (c2)=([2,5)) conflicts with existing key (c2)=([1,3)). @@ -2092,10 +2092,15 @@ BEGIN; REINDEX TABLE CONCURRENTLY concur_reindex_tab; ERROR: REINDEX CONCURRENTLY cannot run inside a transaction block COMMIT; -REINDEX TABLE CONCURRENTLY pg_database; -- no shared relation -ERROR: concurrent index creation on system catalog tables is not supported -REINDEX TABLE CONCURRENTLY pg_class; -- no catalog relations -ERROR: concurrent index creation on system catalog tables is not supported +REINDEX TABLE CONCURRENTLY pg_class; -- no catalog relation +ERROR: cannot reindex a system catalog concurrently +REINDEX INDEX CONCURRENTLY pg_class_oid_index; -- no catalog index +ERROR: cannot reindex a system catalog concurrently +-- These are the toast table and index of pg_authid. +REINDEX TABLE CONCURRENTLY pg_toast.pg_toast_1260; -- no catalog toast table +ERROR: cannot reindex a system catalog concurrently +REINDEX INDEX CONCURRENTLY pg_toast.pg_toast_1260_index; -- no catalog toast index +ERROR: cannot reindex a system catalog concurrently REINDEX SYSTEM CONCURRENTLY postgres; -- not allowed for SYSTEM ERROR: concurrent reindex of system catalogs is not supported -- Warns about catalog relations @@ -2144,7 +2149,7 @@ DROP INDEX concur_reindex_ind5_ccnew; DELETE FROM concur_reindex_tab4 WHERE c1 = 1; -- The invalid index is not processed when running REINDEX TABLE. REINDEX TABLE CONCURRENTLY concur_reindex_tab4; -WARNING: cannot reindex concurrently invalid index "public.concur_reindex_ind5", skipping +WARNING: cannot reindex invalid index "public.concur_reindex_ind5" concurrently, skipping NOTICE: table "concur_reindex_tab4" has no indexes \d concur_reindex_tab4 Table "public.concur_reindex_tab4" diff --git a/src/test/regress/sql/create_index.sql b/src/test/regress/sql/create_index.sql index f29b8ca826f..cd46f071bdc 100644 --- a/src/test/regress/sql/create_index.sql +++ b/src/test/regress/sql/create_index.sql @@ -838,8 +838,11 @@ DROP TABLE concur_reindex_part; BEGIN; REINDEX TABLE CONCURRENTLY concur_reindex_tab; COMMIT; -REINDEX TABLE CONCURRENTLY pg_database; -- no shared relation -REINDEX TABLE CONCURRENTLY pg_class; -- no catalog relations +REINDEX TABLE CONCURRENTLY pg_class; -- no catalog relation +REINDEX INDEX CONCURRENTLY pg_class_oid_index; -- no catalog index +-- These are the toast table and index of pg_authid. +REINDEX TABLE CONCURRENTLY pg_toast.pg_toast_1260; -- no catalog toast table +REINDEX INDEX CONCURRENTLY pg_toast.pg_toast_1260_index; -- no catalog toast index REINDEX SYSTEM CONCURRENTLY postgres; -- not allowed for SYSTEM -- Warns about catalog relations REINDEX SCHEMA CONCURRENTLY pg_catalog; |
