diff --git a/contrib/amcheck/verify_nbtree.c b/contrib/amcheck/verify_nbtree.c index 14ed31753f..3624fa632e 100644 --- a/contrib/amcheck/verify_nbtree.c +++ b/contrib/amcheck/verify_nbtree.c @@ -289,7 +289,7 @@ btree_index_checkable(Relation rel) errdetail("Index \"%s\" is associated with temporary relation.", RelationGetRelationName(rel)))); - if (!IndexIsValid(rel->rd_index)) + if (!rel->rd_index->indisvalid) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot check index \"%s\"", diff --git a/contrib/tcn/tcn.c b/contrib/tcn/tcn.c index 0c274322bd..bcb29edb66 100644 --- a/contrib/tcn/tcn.c +++ b/contrib/tcn/tcn.c @@ -136,7 +136,7 @@ triggered_change_notification(PG_FUNCTION_ARGS) elog(ERROR, "cache lookup failed for index %u", indexoid); index = (Form_pg_index) GETSTRUCT(indexTuple); /* we're only interested if it is the primary key and valid */ - if (index->indisprimary && IndexIsValid(index)) + if (index->indisprimary && index->indisvalid) { int indnkeyatts = index->indnkeyatts; diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c index d1dad998d2..d26c081a1b 100644 --- a/src/backend/access/heap/tuptoaster.c +++ b/src/backend/access/heap/tuptoaster.c @@ -1667,7 +1667,7 @@ toast_save_datum(Relation rel, Datum value, for (i = 0; i < num_indexes; i++) { /* Only index relations marked as ready can be updated */ - if (IndexIsReady(toastidxs[i]->rd_index)) + if (toastidxs[i]->rd_index->indisready) index_insert(toastidxs[i], t_values, t_isnull, &(toasttup->t_self), toastrel, diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index 8709e8c22c..c2ad944e04 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -153,7 +153,7 @@ static void ResetReindexPending(void); * * Caller must have suitable lock on the relation. * - * Note: we intentionally do not check IndexIsValid here; that's because this + * Note: we intentionally do not check indisvalid here; that's because this * is used to enforce the rule that there can be only one indisprimary index, * and we want that to be true even if said index is invalid. */ @@ -1792,7 +1792,7 @@ BuildIndexInfo(Relation index) /* other info */ ii->ii_Unique = indexStruct->indisunique; - ii->ii_ReadyForInserts = IndexIsReady(indexStruct); + ii->ii_ReadyForInserts = indexStruct->indisready; /* assume not doing speculative insertion for now */ ii->ii_UniqueOps = NULL; ii->ii_UniqueProcs = NULL; diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index 610e425a56..6ae0debe15 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -470,7 +470,7 @@ check_index_is_clusterable(Relation OldHeap, Oid indexOid, bool recheck, LOCKMOD * might put recently-dead tuples out-of-order in the new table, and there * is little harm in that.) */ - if (!IndexIsValid(OldIndex->rd_index)) + if (!OldIndex->rd_index->indisvalid) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot cluster on invalid index \"%s\"", @@ -545,7 +545,7 @@ mark_index_clustered(Relation rel, Oid indexOid, bool is_internal) else if (thisIndexOid == indexOid) { /* this was checked earlier, but let's be real sure */ - if (!IndexIsValid(indexForm)) + if (!indexForm->indisvalid) elog(ERROR, "cannot cluster on invalid index %u", indexOid); indexForm->indisclustered = true; CatalogTupleUpdate(pg_index, &indexTuple->t_self, indexTuple); diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index 6c06167fb2..62ec387486 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -224,7 +224,7 @@ CheckIndexCompatible(Oid oldId, */ if (!(heap_attisnull(tuple, Anum_pg_index_indpred, NULL) && heap_attisnull(tuple, Anum_pg_index_indexprs, NULL) && - IndexIsValid(indexForm))) + indexForm->indisvalid)) { ReleaseSysCache(tuple); return false; @@ -976,7 +976,7 @@ DefineIndex(Oid relationId, ConstraintSetParentConstraint(cldConstrOid, createdConstraintId); - if (!IndexIsValid(cldidx->rd_index)) + if (!cldidx->rd_index->indisvalid) invalidate_parent = true; found = true; diff --git a/src/backend/commands/matview.c b/src/backend/commands/matview.c index a171ebabf8..7605b302bb 100644 --- a/src/backend/commands/matview.c +++ b/src/backend/commands/matview.c @@ -870,7 +870,7 @@ is_usable_unique_index(Relation indexRel) if (indexStruct->indisunique && indexStruct->indimmediate && indexRel->rd_rel->relam == BTREE_AM_OID && - IndexIsValid(indexStruct) && + indexStruct->indisvalid && RelationGetIndexPredicate(indexRel) == NIL && indexStruct->indnatts > 0) { diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 936d7aa611..c8c50e8c98 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8107,7 +8107,7 @@ transformFkeyGetPrimaryKey(Relation pkrel, Oid *indexOid, if (!HeapTupleIsValid(indexTuple)) elog(ERROR, "cache lookup failed for index %u", indexoid); indexStruct = (Form_pg_index) GETSTRUCT(indexTuple); - if (indexStruct->indisprimary && IndexIsValid(indexStruct)) + if (indexStruct->indisprimary && indexStruct->indisvalid) { /* * Refuse to use a deferrable primary key. This is per SQL spec, @@ -8228,7 +8228,7 @@ transformFkeyCheckAttrs(Relation pkrel, */ if (indexStruct->indnkeyatts == numattrs && indexStruct->indisunique && - IndexIsValid(indexStruct) && + indexStruct->indisvalid && heap_attisnull(indexTuple, Anum_pg_index_indpred, NULL) && heap_attisnull(indexTuple, Anum_pg_index_indexprs, NULL)) { @@ -12461,7 +12461,7 @@ ATExecReplicaIdentity(Relation rel, ReplicaIdentityStmt *stmt, LOCKMODE lockmode errmsg("cannot use partial index \"%s\" as replica identity", RelationGetRelationName(indexRel)))); /* And neither are invalid indexes. */ - if (!IndexIsValid(indexRel->rd_index)) + if (!indexRel->rd_index->indisvalid) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot use invalid index \"%s\" as replica identity", @@ -14996,7 +14996,7 @@ validatePartitionedIndex(Relation partedIdx, Relation partedTbl) elog(ERROR, "cache lookup failed for index %u", inhForm->inhrelid); indexForm = (Form_pg_index) GETSTRUCT(indTup); - if (IndexIsValid(indexForm)) + if (indexForm->indisvalid) tuples += 1; ReleaseSysCache(indTup); } diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 25b3b0312c..38d06b2173 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -1754,7 +1754,7 @@ vacuum_rel(Oid relid, RangeVar *relation, int options, VacuumParams *params) * specified kind of lock on each. Return an array of Relation pointers for * the indexes into *Irel, and the number of indexes into *nindexes. * - * We consider an index vacuumable if it is marked insertable (IndexIsReady). + * We consider an index vacuumable if it is marked insertable (indisready). * If it isn't, probably a CREATE INDEX CONCURRENTLY command failed early in * execution, and what we have is too corrupt to be processable. We will * vacuum even if the index isn't indisvalid; this is important because in a @@ -1789,7 +1789,7 @@ vac_open_indexes(Relation relation, LOCKMODE lockmode, Relation indrel; indrel = index_open(indexoid, lockmode); - if (IndexIsReady(indrel->rd_index)) + if (indrel->rd_index->indisready) (*Irel)[i++] = indrel; else index_close(indrel, lockmode); diff --git a/src/backend/executor/execIndexing.c b/src/backend/executor/execIndexing.c index 8b35bb458d..bbd2726cee 100644 --- a/src/backend/executor/execIndexing.c +++ b/src/backend/executor/execIndexing.c @@ -184,7 +184,7 @@ ExecOpenIndices(ResultRelInfo *resultRelInfo, bool speculative) * For each index, open the index relation and save pg_index info. We * acquire RowExclusiveLock, signifying we will update the index. * - * Note: we do this even if the index is not IndexIsReady; it's not worth + * Note: we do this even if the index is not indisready; it's not worth * the trouble to optimize for the case where it isn't. */ i = 0; diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c index a570ac0aab..5790b62369 100644 --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -201,9 +201,9 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent, * queries. Note that this is OK because the data structure we * are constructing is only used by the planner --- the executor * still needs to insert into "invalid" indexes, if they're marked - * IndexIsReady. + * indisready. */ - if (!IndexIsValid(index)) + if (!index->indisvalid) { index_close(indexRelation, NoLock); continue; @@ -696,7 +696,7 @@ infer_arbiter_indexes(PlannerInfo *root) idxRel = index_open(indexoid, RowExclusiveLock); idxForm = idxRel->rd_index; - if (!IndexIsValid(idxForm)) + if (!idxForm->indisvalid) goto next; /* diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c index 52582d0a13..807bb9bae2 100644 --- a/src/backend/parser/parse_utilcmd.c +++ b/src/backend/parser/parse_utilcmd.c @@ -1970,7 +1970,7 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt) index_name, RelationGetRelationName(heap_rel)), parser_errposition(cxt->pstate, constraint->location))); - if (!IndexIsValid(index_form)) + if (!index_form->indisvalid) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("index \"%s\" is not valid", index_name), diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index c3071db1cd..c88871fd3c 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -4221,7 +4221,7 @@ RelationGetFKeyList(Relation relation) * so that we must recompute the index list on next request. This handles * creation or deletion of an index. * - * Indexes that are marked not IndexIsLive are omitted from the returned list. + * Indexes that are marked not indislive are omitted from the returned list. * Such indexes are expected to be dropped momentarily, and should not be * touched at all by any caller of this function. * @@ -4288,7 +4288,7 @@ RelationGetIndexList(Relation relation) * HOT-safety decisions. It's unsafe to touch such an index at all * since its catalog entries could disappear at any instant. */ - if (!IndexIsLive(index)) + if (!index->indislive) continue; /* Add index's OID to result list in the proper order */ @@ -4299,7 +4299,7 @@ RelationGetIndexList(Relation relation) * interesting for either oid indexes or replication identity indexes, * so don't check them. */ - if (!IndexIsValid(index) || !index->indisunique || + if (!index->indisvalid || !index->indisunique || !index->indimmediate || !heap_attisnull(htup, Anum_pg_index_indpred, NULL)) continue; diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h index ebe8955bf3..a10c26b70a 100644 --- a/src/include/catalog/pg_index.h +++ b/src/include/catalog/pg_index.h @@ -77,13 +77,4 @@ typedef FormData_pg_index *Form_pg_index; #endif /* EXPOSE_TO_CLIENT_CODE */ -/* - * Use of these macros is recommended over direct examination of the state - * flag columns where possible; this allows source code compatibility with - * the hacky representation used in 9.2. - */ -#define IndexIsValid(indexForm) ((indexForm)->indisvalid) -#define IndexIsReady(indexForm) ((indexForm)->indisready) -#define IndexIsLive(indexForm) ((indexForm)->indislive) - #endif /* PG_INDEX_H */