MemoryContextSwitchTo(oldcontext);
 
+                               /* A system catalog cannot be reindexed concurrently */
+                               if (IsCatalogRelationOid(relationOid))
+                                       ereport(ERROR,
+                                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+                                                        errmsg("cannot reindex a system catalog concurrently")));
+
                                /* Open relation to get its indexes */
                                heapRelation = table_open(relationOid, ShareUpdateExclusiveLock);
 
                                        if (!indexRelation->rd_index->indisvalid)
                                                ereport(WARNING,
                                                                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                                                errmsg("cannot reindex concurrently invalid index \"%s.%s\", skipping",
+                                                                errmsg("cannot reindex invalid index \"%s.%s\" concurrently, skipping",
                                                                                get_namespace_name(get_rel_namespace(cellOid)),
                                                                                get_rel_name(cellOid))));
                                        else if (indexRelation->rd_index->indisexclusion)
                                                ereport(WARNING,
                                                                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                                                errmsg("cannot reindex concurrently exclusion constraint index \"%s.%s\", skipping",
+                                                                errmsg("cannot reindex exclusion constraint index \"%s.%s\" concurrently, skipping",
                                                                                get_namespace_name(get_rel_namespace(cellOid)),
                                                                                get_rel_name(cellOid))));
                                        else
                                                if (!indexRelation->rd_index->indisvalid)
                                                        ereport(WARNING,
                                                                        (errcode(ERRCODE_INDEX_CORRUPTED),
-                                                                        errmsg("cannot reindex concurrently invalid index \"%s.%s\", skipping",
+                                                                        errmsg("cannot reindex invalid index \"%s.%s\" concurrently, skipping",
                                                                                        get_namespace_name(get_rel_namespace(cellOid)),
                                                                                        get_rel_name(cellOid))));
                                                else
                        {
                                Oid                     heapId = IndexGetRelation(relationOid, false);
 
-                               /* A shared relation cannot be reindexed concurrently */
-                               if (IsSharedRelation(heapId))
-                                       ereport(ERROR,
-                                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                                        errmsg("concurrent reindex is not supported for shared relations")));
-
                                /* A system catalog cannot be reindexed concurrently */
                                if (IsCatalogRelationOid(heapId))
                                        ereport(ERROR,
                                                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                                        errmsg("concurrent reindex is not supported for catalog relations")));
+                                                        errmsg("cannot reindex a system catalog concurrently")));
 
                                /* Save the list of relation OIDs in private context */
                                oldcontext = MemoryContextSwitchTo(private_context);
                        /* Return error if type of relation is not supported */
                        ereport(ERROR,
                                        (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                                        errmsg("cannot reindex concurrently this type of relation")));
+                                        errmsg("cannot reindex this type of relation concurrently")));
                        break;
        }
 
 
 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)).
 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
 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"
 
 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;