1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-06 19:59:18 +03:00

Rework some error strings for REINDEX CONCURRENTLY with system catalogs

This makes the whole user experience more consistent when bumping into
failures, and more in line with the rewording done via 508300e.

Author: Michael Paquier
Reviewed-by: Álvaro Herrera
Discussion: https://postgr.es/m/20190514153252.GA22168@alvherre.pgsql
This commit is contained in:
Michael Paquier 2019-06-20 13:28:12 +09:00
parent 252f9a2580
commit 20e1cc898d
2 changed files with 10 additions and 12 deletions

View File

@ -2499,7 +2499,7 @@ ReindexMultipleTables(const char *objectName, ReindexObjectType objectKind,
if (objectKind == REINDEX_OBJECT_SYSTEM && concurrent) if (objectKind == REINDEX_OBJECT_SYSTEM && concurrent)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("concurrent reindex of system catalogs is not supported"))); errmsg("cannot reindex system catalogs concurrently")));
/* /*
* Get OID of object to reindex, being the database currently being used * Get OID of object to reindex, being the database currently being used
@ -2613,7 +2613,7 @@ ReindexMultipleTables(const char *objectName, ReindexObjectType objectKind,
if (!concurrent_warning) if (!concurrent_warning)
ereport(WARNING, ereport(WARNING,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("concurrent reindex is not supported for catalog relations, skipping all"))); errmsg("cannot reindex system catalogs concurrently, skipping all")));
concurrent_warning = true; concurrent_warning = true;
continue; continue;
} }
@ -2764,11 +2764,10 @@ ReindexRelationConcurrently(Oid relationOid, int options)
MemoryContextSwitchTo(oldcontext); MemoryContextSwitchTo(oldcontext);
/* A system catalog cannot be reindexed concurrently */
if (IsCatalogRelationOid(relationOid)) if (IsCatalogRelationOid(relationOid))
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot reindex a system catalog concurrently"))); errmsg("cannot reindex system catalogs concurrently")));
/* Open relation to get its indexes */ /* Open relation to get its indexes */
heapRelation = table_open(relationOid, ShareUpdateExclusiveLock); heapRelation = table_open(relationOid, ShareUpdateExclusiveLock);
@ -2858,11 +2857,10 @@ ReindexRelationConcurrently(Oid relationOid, int options)
{ {
Oid heapId = IndexGetRelation(relationOid, false); Oid heapId = IndexGetRelation(relationOid, false);
/* A system catalog cannot be reindexed concurrently */
if (IsCatalogRelationOid(heapId)) if (IsCatalogRelationOid(heapId))
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot reindex a system catalog concurrently"))); errmsg("cannot reindex system catalogs concurrently")));
/* Save the list of relation OIDs in private context */ /* Save the list of relation OIDs in private context */
oldcontext = MemoryContextSwitchTo(private_context); oldcontext = MemoryContextSwitchTo(private_context);

View File

@ -2093,19 +2093,19 @@ REINDEX TABLE CONCURRENTLY concur_reindex_tab;
ERROR: REINDEX CONCURRENTLY cannot run inside a transaction block ERROR: REINDEX CONCURRENTLY cannot run inside a transaction block
COMMIT; COMMIT;
REINDEX TABLE CONCURRENTLY pg_class; -- no catalog relation REINDEX TABLE CONCURRENTLY pg_class; -- no catalog relation
ERROR: cannot reindex a system catalog concurrently ERROR: cannot reindex system catalogs concurrently
REINDEX INDEX CONCURRENTLY pg_class_oid_index; -- no catalog index REINDEX INDEX CONCURRENTLY pg_class_oid_index; -- no catalog index
ERROR: cannot reindex a system catalog concurrently ERROR: cannot reindex system catalogs concurrently
-- These are the toast table and index of pg_authid. -- These are the toast table and index of pg_authid.
REINDEX TABLE CONCURRENTLY pg_toast.pg_toast_1260; -- no catalog toast table REINDEX TABLE CONCURRENTLY pg_toast.pg_toast_1260; -- no catalog toast table
ERROR: cannot reindex a system catalog concurrently ERROR: cannot reindex system catalogs concurrently
REINDEX INDEX CONCURRENTLY pg_toast.pg_toast_1260_index; -- no catalog toast index REINDEX INDEX CONCURRENTLY pg_toast.pg_toast_1260_index; -- no catalog toast index
ERROR: cannot reindex a system catalog concurrently ERROR: cannot reindex system catalogs concurrently
REINDEX SYSTEM CONCURRENTLY postgres; -- not allowed for SYSTEM REINDEX SYSTEM CONCURRENTLY postgres; -- not allowed for SYSTEM
ERROR: concurrent reindex of system catalogs is not supported ERROR: cannot reindex system catalogs concurrently
-- Warns about catalog relations -- Warns about catalog relations
REINDEX SCHEMA CONCURRENTLY pg_catalog; REINDEX SCHEMA CONCURRENTLY pg_catalog;
WARNING: concurrent reindex is not supported for catalog relations, skipping all WARNING: cannot reindex system catalogs concurrently, skipping all
-- Check the relation status, there should not be invalid indexes -- Check the relation status, there should not be invalid indexes
\d concur_reindex_tab \d concur_reindex_tab
Table "public.concur_reindex_tab" Table "public.concur_reindex_tab"