On Wed, Dec 06, 2023 at 04:33:33PM -0800, Noah Misch wrote: > On Wed, Dec 06, 2023 at 03:17:12PM +0900, Michael Paquier wrote: >>> The "cannot" part of the message is also inaccurate, and it's not clear to >>> me >>> why we have this specific restriction at all. REINDEX INDEX CONCURRENTLY >>> accepts such indexes, so I doubt it's an implementation gap. >> >> If you would reword that, what would you change? > > I'd do "skipping reindex of invalid index \"%s.%s\"". If one wanted more,
In line with vacuum.c, that sounds like a good idea at the end.
> errhint("Use DROP INDEX or REINDEX INDEX.") would fit.
I'm OK with this suggestion as well.
--
Michael
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 4ee498d985..e56205abd8 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -3526,10 +3526,11 @@ ReindexRelationConcurrently(const ReindexStmt *stmt, Oid relationOid, const Rein
if (!indexRelation->rd_index->indisvalid)
ereport(WARNING,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("cannot reindex invalid index \"%s.%s\" concurrently, skipping",
+ (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+ errmsg("skipping reindex of invalid index \"%s.%s\"",
get_namespace_name(get_rel_namespace(cellOid)),
- get_rel_name(cellOid))));
+ get_rel_name(cellOid)),
+ errhint("Use DROP INDEX or REINDEX INDEX.")));
else if (indexRelation->rd_index->indisexclusion)
ereport(WARNING,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@@ -3578,10 +3579,11 @@ ReindexRelationConcurrently(const ReindexStmt *stmt, Oid relationOid, const Rein
if (!indexRelation->rd_index->indisvalid)
ereport(WARNING,
- (errcode(ERRCODE_INDEX_CORRUPTED),
- errmsg("cannot reindex invalid index \"%s.%s\" concurrently, skipping",
+ (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+ errmsg("skipping reindex of invalid index \"%s.%s\"",
get_namespace_name(get_rel_namespace(cellOid)),
- get_rel_name(cellOid))));
+ get_rel_name(cellOid)),
+ errhint("Use DROP INDEX or REINDEX INDEX.")));
else
{
ReindexIndexInfo *idx;
diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out
index acfd9d1f4f..446cfa678b 100644
--- a/src/test/regress/expected/create_index.out
+++ b/src/test/regress/expected/create_index.out
@@ -2581,7 +2581,8 @@ 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 invalid index "public.concur_reindex_ind5" concurrently, skipping
+WARNING: skipping reindex of invalid index "public.concur_reindex_ind5"
+HINT: Use DROP INDEX or REINDEX INDEX.
NOTICE: table "concur_reindex_tab4" has no indexes that can be reindexed concurrently
\d concur_reindex_tab4
Table "public.concur_reindex_tab4"
signature.asc
Description: PGP signature
