1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-03 20:02:46 +03:00

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 <boekewurm+postgres@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://www.postgresql.org/message-id/flat/4688d55c-9a2e-9a5a-d166-5f24fe0bf8db%40enterprisedb.com
This commit is contained in:
Peter Eisentraut
2020-12-09 15:12:05 +01:00
parent 16c302f512
commit 8b069ef5dc
7 changed files with 29 additions and 75 deletions

View File

@ -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 *