aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils')
-rw-r--r--src/backend/utils/cache/lsyscache.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c
index 7a9af03c960..bcfa5cb4add 100644
--- a/src/backend/utils/cache/lsyscache.c
+++ b/src/backend/utils/cache/lsyscache.c
@@ -30,6 +30,7 @@
#include "catalog/pg_language.h"
#include "catalog/pg_namespace.h"
#include "catalog/pg_opclass.h"
+#include "catalog/pg_opfamily.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_publication.h"
@@ -1273,6 +1274,32 @@ get_opclass_method(Oid opclass)
return result;
}
+/* ---------- OPFAMILY CACHE ---------- */
+
+char *
+get_opfamily_name(Oid opfid, bool missing_ok)
+{
+ HeapTuple tup;
+ char *opfname;
+ Form_pg_opfamily opfform;
+
+ tup = SearchSysCache1(OPFAMILYOID, ObjectIdGetDatum(opfid));
+
+ if (!HeapTupleIsValid(tup))
+ {
+ if (!missing_ok)
+ elog(ERROR, "cache lookup failed for operator family %u", opfid);
+ return NULL;
+ }
+
+ opfform = (Form_pg_opfamily) GETSTRUCT(tup);
+ opfname = pstrdup(NameStr(opfform->opfname));
+
+ ReleaseSysCache(tup);
+
+ return opfname;
+}
+
/* ---------- OPERATOR CACHE ---------- */
/*