There are three static definitions of validate_relation_kind() in the
codebase, one each in table.c, indexam.c and sequence.c, validating that
the given relation is a table, an index or a sequence respectively.
The compiler knows which definition to use where because they are static.
But this could be confusing to a reader. Rename these functions so that
their names reflect the kind of relation they are validating. While at
it, also update the comments in table.c to clarify the definition of
table-like relkinds so that we don't have to maintain the exclusion list
as the set of relkinds undergoes changes.
Author: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Reviewed-by: Junwang Zhao <zhjwpku@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/
6d3fef19-a420-4e11-8235-
8ea534bf2080%40eisentraut.org
static IndexScanDesc index_beginscan_internal(Relation indexRelation,
int nkeys, int norderbys, Snapshot snapshot,
ParallelIndexScanDesc pscan, bool temp_snap);
-static inline void validate_relation_kind(Relation r);
+static inline void validate_relation_as_index(Relation r);
/* ----------------------------------------------------------------
r = relation_open(relationId, lockmode);
- validate_relation_kind(r);
+ validate_relation_as_index(r);
return r;
}
if (!r)
return NULL;
- validate_relation_kind(r);
+ validate_relation_as_index(r);
return r;
}
}
/* ----------------
- * validate_relation_kind - check the relation's kind
+ * validate_relation_as_index
*
* Make sure relkind is an index or a partitioned index.
* ----------------
*/
static inline void
-validate_relation_kind(Relation r)
+validate_relation_as_index(Relation r)
{
if (r->rd_rel->relkind != RELKIND_INDEX &&
r->rd_rel->relkind != RELKIND_PARTITIONED_INDEX)
#include "access/sequence.h"
#include "utils/rel.h"
-static inline void validate_relation_kind(Relation r);
+static inline void validate_relation_as_sequence(Relation r);
/* ----------------
* sequence_open - open a sequence relation by relation OID
r = relation_open(relationId, lockmode);
- validate_relation_kind(r);
+ validate_relation_as_sequence(r);
return r;
}
}
/* ----------------
- * validate_relation_kind - check the relation's kind
+ * validate_relation_as_sequence
*
* Make sure relkind is a sequence.
* ----------------
*/
static inline void
-validate_relation_kind(Relation r)
+validate_relation_as_sequence(Relation r)
{
if (r->rd_rel->relkind != RELKIND_SEQUENCE)
ereport(ERROR,
#include "access/table.h"
#include "utils/rel.h"
-static inline void validate_relation_kind(Relation r);
+static inline void validate_relation_as_table(Relation r);
/* ----------------
* table_open - open a table relation by relation OID
r = relation_open(relationId, lockmode);
- validate_relation_kind(r);
+ validate_relation_as_table(r);
return r;
}
if (!r)
return NULL;
- validate_relation_kind(r);
+ validate_relation_as_table(r);
return r;
}
r = relation_openrv(relation, lockmode);
- validate_relation_kind(r);
+ validate_relation_as_table(r);
return r;
}
r = relation_openrv_extended(relation, lockmode, missing_ok);
if (r)
- validate_relation_kind(r);
+ validate_relation_as_table(r);
return r;
}
}
/* ----------------
- * validate_relation_kind - check the relation's kind
+ * validate_relation_as_table
*
- * Make sure relkind is table-like. In particular, this excludes indexes
- * and composite types, which cannot be read from in a query.
+ * Make sure relkind is table-like, that is, something that could be read
+ * from or written to directly in a query.
* ----------------
*/
static inline void
-validate_relation_kind(Relation r)
+validate_relation_as_table(Relation r)
{
if (r->rd_rel->relkind != RELKIND_RELATION &&
r->rd_rel->relkind != RELKIND_SEQUENCE &&