Commit ae4472c6 authored by Peter Eisentraut's avatar Peter Eisentraut

Remove obsolete IndexIs* macros

Remove IndexIsValid(), IndexIsReady(), IndexIsLive() in favor of
accessing the index structure directly.  These macros haven't been
used consistently, and the original reason of maintaining source
compatibility with PostgreSQL 9.2 is gone.

Discussion: https://www.postgresql.org/message-id/flat/d419147c-09d4-6196-5d9d-0234b230880a%402ndquadrant.com
parent 5c828307
...@@ -289,7 +289,7 @@ btree_index_checkable(Relation rel) ...@@ -289,7 +289,7 @@ btree_index_checkable(Relation rel)
errdetail("Index \"%s\" is associated with temporary relation.", errdetail("Index \"%s\" is associated with temporary relation.",
RelationGetRelationName(rel)))); RelationGetRelationName(rel))));
if (!IndexIsValid(rel->rd_index)) if (!rel->rd_index->indisvalid)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot check index \"%s\"", errmsg("cannot check index \"%s\"",
......
...@@ -136,7 +136,7 @@ triggered_change_notification(PG_FUNCTION_ARGS) ...@@ -136,7 +136,7 @@ triggered_change_notification(PG_FUNCTION_ARGS)
elog(ERROR, "cache lookup failed for index %u", indexoid); elog(ERROR, "cache lookup failed for index %u", indexoid);
index = (Form_pg_index) GETSTRUCT(indexTuple); index = (Form_pg_index) GETSTRUCT(indexTuple);
/* we're only interested if it is the primary key and valid */ /* 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; int indnkeyatts = index->indnkeyatts;
......
...@@ -1667,7 +1667,7 @@ toast_save_datum(Relation rel, Datum value, ...@@ -1667,7 +1667,7 @@ toast_save_datum(Relation rel, Datum value,
for (i = 0; i < num_indexes; i++) for (i = 0; i < num_indexes; i++)
{ {
/* Only index relations marked as ready can be updated */ /* 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, index_insert(toastidxs[i], t_values, t_isnull,
&(toasttup->t_self), &(toasttup->t_self),
toastrel, toastrel,
......
...@@ -153,7 +153,7 @@ static void ResetReindexPending(void); ...@@ -153,7 +153,7 @@ static void ResetReindexPending(void);
* *
* Caller must have suitable lock on the relation. * 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, * 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. * and we want that to be true even if said index is invalid.
*/ */
...@@ -1792,7 +1792,7 @@ BuildIndexInfo(Relation index) ...@@ -1792,7 +1792,7 @@ BuildIndexInfo(Relation index)
/* other info */ /* other info */
ii->ii_Unique = indexStruct->indisunique; ii->ii_Unique = indexStruct->indisunique;
ii->ii_ReadyForInserts = IndexIsReady(indexStruct); ii->ii_ReadyForInserts = indexStruct->indisready;
/* assume not doing speculative insertion for now */ /* assume not doing speculative insertion for now */
ii->ii_UniqueOps = NULL; ii->ii_UniqueOps = NULL;
ii->ii_UniqueProcs = NULL; ii->ii_UniqueProcs = NULL;
......
...@@ -470,7 +470,7 @@ check_index_is_clusterable(Relation OldHeap, Oid indexOid, bool recheck, LOCKMOD ...@@ -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 * might put recently-dead tuples out-of-order in the new table, and there
* is little harm in that.) * is little harm in that.)
*/ */
if (!IndexIsValid(OldIndex->rd_index)) if (!OldIndex->rd_index->indisvalid)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot cluster on invalid index \"%s\"", errmsg("cannot cluster on invalid index \"%s\"",
...@@ -545,7 +545,7 @@ mark_index_clustered(Relation rel, Oid indexOid, bool is_internal) ...@@ -545,7 +545,7 @@ mark_index_clustered(Relation rel, Oid indexOid, bool is_internal)
else if (thisIndexOid == indexOid) else if (thisIndexOid == indexOid)
{ {
/* this was checked earlier, but let's be real sure */ /* 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); elog(ERROR, "cannot cluster on invalid index %u", indexOid);
indexForm->indisclustered = true; indexForm->indisclustered = true;
CatalogTupleUpdate(pg_index, &indexTuple->t_self, indexTuple); CatalogTupleUpdate(pg_index, &indexTuple->t_self, indexTuple);
......
...@@ -224,7 +224,7 @@ CheckIndexCompatible(Oid oldId, ...@@ -224,7 +224,7 @@ CheckIndexCompatible(Oid oldId,
*/ */
if (!(heap_attisnull(tuple, Anum_pg_index_indpred, NULL) && if (!(heap_attisnull(tuple, Anum_pg_index_indpred, NULL) &&
heap_attisnull(tuple, Anum_pg_index_indexprs, NULL) && heap_attisnull(tuple, Anum_pg_index_indexprs, NULL) &&
IndexIsValid(indexForm))) indexForm->indisvalid))
{ {
ReleaseSysCache(tuple); ReleaseSysCache(tuple);
return false; return false;
...@@ -976,7 +976,7 @@ DefineIndex(Oid relationId, ...@@ -976,7 +976,7 @@ DefineIndex(Oid relationId,
ConstraintSetParentConstraint(cldConstrOid, ConstraintSetParentConstraint(cldConstrOid,
createdConstraintId); createdConstraintId);
if (!IndexIsValid(cldidx->rd_index)) if (!cldidx->rd_index->indisvalid)
invalidate_parent = true; invalidate_parent = true;
found = true; found = true;
......
...@@ -870,7 +870,7 @@ is_usable_unique_index(Relation indexRel) ...@@ -870,7 +870,7 @@ is_usable_unique_index(Relation indexRel)
if (indexStruct->indisunique && if (indexStruct->indisunique &&
indexStruct->indimmediate && indexStruct->indimmediate &&
indexRel->rd_rel->relam == BTREE_AM_OID && indexRel->rd_rel->relam == BTREE_AM_OID &&
IndexIsValid(indexStruct) && indexStruct->indisvalid &&
RelationGetIndexPredicate(indexRel) == NIL && RelationGetIndexPredicate(indexRel) == NIL &&
indexStruct->indnatts > 0) indexStruct->indnatts > 0)
{ {
......
...@@ -8107,7 +8107,7 @@ transformFkeyGetPrimaryKey(Relation pkrel, Oid *indexOid, ...@@ -8107,7 +8107,7 @@ transformFkeyGetPrimaryKey(Relation pkrel, Oid *indexOid,
if (!HeapTupleIsValid(indexTuple)) if (!HeapTupleIsValid(indexTuple))
elog(ERROR, "cache lookup failed for index %u", indexoid); elog(ERROR, "cache lookup failed for index %u", indexoid);
indexStruct = (Form_pg_index) GETSTRUCT(indexTuple); 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, * Refuse to use a deferrable primary key. This is per SQL spec,
...@@ -8228,7 +8228,7 @@ transformFkeyCheckAttrs(Relation pkrel, ...@@ -8228,7 +8228,7 @@ transformFkeyCheckAttrs(Relation pkrel,
*/ */
if (indexStruct->indnkeyatts == numattrs && if (indexStruct->indnkeyatts == numattrs &&
indexStruct->indisunique && indexStruct->indisunique &&
IndexIsValid(indexStruct) && indexStruct->indisvalid &&
heap_attisnull(indexTuple, Anum_pg_index_indpred, NULL) && heap_attisnull(indexTuple, Anum_pg_index_indpred, NULL) &&
heap_attisnull(indexTuple, Anum_pg_index_indexprs, NULL)) heap_attisnull(indexTuple, Anum_pg_index_indexprs, NULL))
{ {
...@@ -12461,7 +12461,7 @@ ATExecReplicaIdentity(Relation rel, ReplicaIdentityStmt *stmt, LOCKMODE lockmode ...@@ -12461,7 +12461,7 @@ ATExecReplicaIdentity(Relation rel, ReplicaIdentityStmt *stmt, LOCKMODE lockmode
errmsg("cannot use partial index \"%s\" as replica identity", errmsg("cannot use partial index \"%s\" as replica identity",
RelationGetRelationName(indexRel)))); RelationGetRelationName(indexRel))));
/* And neither are invalid indexes. */ /* And neither are invalid indexes. */
if (!IndexIsValid(indexRel->rd_index)) if (!indexRel->rd_index->indisvalid)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot use invalid index \"%s\" as replica identity", errmsg("cannot use invalid index \"%s\" as replica identity",
...@@ -14996,7 +14996,7 @@ validatePartitionedIndex(Relation partedIdx, Relation partedTbl) ...@@ -14996,7 +14996,7 @@ validatePartitionedIndex(Relation partedIdx, Relation partedTbl)
elog(ERROR, "cache lookup failed for index %u", elog(ERROR, "cache lookup failed for index %u",
inhForm->inhrelid); inhForm->inhrelid);
indexForm = (Form_pg_index) GETSTRUCT(indTup); indexForm = (Form_pg_index) GETSTRUCT(indTup);
if (IndexIsValid(indexForm)) if (indexForm->indisvalid)
tuples += 1; tuples += 1;
ReleaseSysCache(indTup); ReleaseSysCache(indTup);
} }
......
...@@ -1754,7 +1754,7 @@ vacuum_rel(Oid relid, RangeVar *relation, int options, VacuumParams *params) ...@@ -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 * specified kind of lock on each. Return an array of Relation pointers for
* the indexes into *Irel, and the number of indexes into *nindexes. * 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 * 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 * 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 * 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, ...@@ -1789,7 +1789,7 @@ vac_open_indexes(Relation relation, LOCKMODE lockmode,
Relation indrel; Relation indrel;
indrel = index_open(indexoid, lockmode); indrel = index_open(indexoid, lockmode);
if (IndexIsReady(indrel->rd_index)) if (indrel->rd_index->indisready)
(*Irel)[i++] = indrel; (*Irel)[i++] = indrel;
else else
index_close(indrel, lockmode); index_close(indrel, lockmode);
......
...@@ -184,7 +184,7 @@ ExecOpenIndices(ResultRelInfo *resultRelInfo, bool speculative) ...@@ -184,7 +184,7 @@ ExecOpenIndices(ResultRelInfo *resultRelInfo, bool speculative)
* For each index, open the index relation and save pg_index info. We * For each index, open the index relation and save pg_index info. We
* acquire RowExclusiveLock, signifying we will update the index. * 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. * the trouble to optimize for the case where it isn't.
*/ */
i = 0; i = 0;
......
...@@ -201,9 +201,9 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent, ...@@ -201,9 +201,9 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent,
* queries. Note that this is OK because the data structure we * queries. Note that this is OK because the data structure we
* are constructing is only used by the planner --- the executor * are constructing is only used by the planner --- the executor
* still needs to insert into "invalid" indexes, if they're marked * still needs to insert into "invalid" indexes, if they're marked
* IndexIsReady. * indisready.
*/ */
if (!IndexIsValid(index)) if (!index->indisvalid)
{ {
index_close(indexRelation, NoLock); index_close(indexRelation, NoLock);
continue; continue;
...@@ -696,7 +696,7 @@ infer_arbiter_indexes(PlannerInfo *root) ...@@ -696,7 +696,7 @@ infer_arbiter_indexes(PlannerInfo *root)
idxRel = index_open(indexoid, RowExclusiveLock); idxRel = index_open(indexoid, RowExclusiveLock);
idxForm = idxRel->rd_index; idxForm = idxRel->rd_index;
if (!IndexIsValid(idxForm)) if (!idxForm->indisvalid)
goto next; goto next;
/* /*
......
...@@ -1970,7 +1970,7 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt) ...@@ -1970,7 +1970,7 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt)
index_name, RelationGetRelationName(heap_rel)), index_name, RelationGetRelationName(heap_rel)),
parser_errposition(cxt->pstate, constraint->location))); parser_errposition(cxt->pstate, constraint->location)));
if (!IndexIsValid(index_form)) if (!index_form->indisvalid)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("index \"%s\" is not valid", index_name), errmsg("index \"%s\" is not valid", index_name),
......
...@@ -4221,7 +4221,7 @@ RelationGetFKeyList(Relation relation) ...@@ -4221,7 +4221,7 @@ RelationGetFKeyList(Relation relation)
* so that we must recompute the index list on next request. This handles * so that we must recompute the index list on next request. This handles
* creation or deletion of an index. * 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 * Such indexes are expected to be dropped momentarily, and should not be
* touched at all by any caller of this function. * touched at all by any caller of this function.
* *
...@@ -4288,7 +4288,7 @@ RelationGetIndexList(Relation relation) ...@@ -4288,7 +4288,7 @@ RelationGetIndexList(Relation relation)
* HOT-safety decisions. It's unsafe to touch such an index at all * HOT-safety decisions. It's unsafe to touch such an index at all
* since its catalog entries could disappear at any instant. * since its catalog entries could disappear at any instant.
*/ */
if (!IndexIsLive(index)) if (!index->indislive)
continue; continue;
/* Add index's OID to result list in the proper order */ /* Add index's OID to result list in the proper order */
...@@ -4299,7 +4299,7 @@ RelationGetIndexList(Relation relation) ...@@ -4299,7 +4299,7 @@ RelationGetIndexList(Relation relation)
* interesting for either oid indexes or replication identity indexes, * interesting for either oid indexes or replication identity indexes,
* so don't check them. * so don't check them.
*/ */
if (!IndexIsValid(index) || !index->indisunique || if (!index->indisvalid || !index->indisunique ||
!index->indimmediate || !index->indimmediate ||
!heap_attisnull(htup, Anum_pg_index_indpred, NULL)) !heap_attisnull(htup, Anum_pg_index_indpred, NULL))
continue; continue;
......
...@@ -77,13 +77,4 @@ typedef FormData_pg_index *Form_pg_index; ...@@ -77,13 +77,4 @@ typedef FormData_pg_index *Form_pg_index;
#endif /* EXPOSE_TO_CLIENT_CODE */ #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 */ #endif /* PG_INDEX_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment