From 8b069ef5dca97cd737a5fd64c420df3cd61ec1c9 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 9 Dec 2020 15:12:05 +0100 Subject: Change get_constraint_index() to use pg_constraint.conindid It was still using a scan of pg_depend instead of using the conindid column that has been added since. Since it is now just a catalog lookup wrapper and not related to pg_depend, move from pg_depend.c to lsyscache.c. Reviewed-by: Matthias van de Meent Reviewed-by: Tom Lane Reviewed-by: Michael Paquier Discussion: https://www.postgresql.org/message-id/flat/4688d55c-9a2e-9a5a-d166-5f24fe0bf8db%40enterprisedb.com --- src/backend/utils/cache/lsyscache.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/backend/utils/cache/lsyscache.c') diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c index ae232991623..47a83658492 100644 --- a/src/backend/utils/cache/lsyscache.c +++ b/src/backend/utils/cache/lsyscache.c @@ -1094,6 +1094,33 @@ get_constraint_name(Oid conoid) return NULL; } +/* + * get_constraint_index + * Given the OID of a unique, primary-key, or exclusion constraint, + * return the OID of the underlying index. + * + * Return InvalidOid if the index couldn't be found; this suggests the + * given OID is bogus, but we leave it to caller to decide what to do. + */ +Oid +get_constraint_index(Oid conoid) +{ + HeapTuple tp; + + tp = SearchSysCache1(CONSTROID, ObjectIdGetDatum(conoid)); + if (HeapTupleIsValid(tp)) + { + Form_pg_constraint contup = (Form_pg_constraint) GETSTRUCT(tp); + Oid result; + + result = contup->conindid; + ReleaseSysCache(tp); + return result; + } + else + return InvalidOid; +} + /* ---------- LANGUAGE CACHE ---------- */ char * -- cgit v1.2.3