summaryrefslogtreecommitdiff
path: root/src/backend/catalog
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2015-06-21 16:08:49 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2015-06-21 16:08:49 -0300
commitad89a5d115b3b4025f3c135f95f722e7e4becf13 (patch)
tree73e95389c4b9bc9b428264db3712485ba819b73d /src/backend/catalog
parent667912aee649c3608e003568e4b47d95251b1c8c (diff)
downloadpostgresql-ad89a5d115b3b4025f3c135f95f722e7e4becf13.tar.gz
Add transforms to pg_get_object_address and friends
This was missed when transforms were added by commit cac76582053ef8e. Extracted from a larger patch Author: Michael Paquier
Diffstat (limited to 'src/backend/catalog')
-rw-r--r--src/backend/catalog/objectaddress.c45
1 files changed, 44 insertions, 1 deletions
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index c37e38fa3b..83390f6bab 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -634,6 +634,10 @@ static const struct object_type_map
/* OCLASS_POLICY */
{
"policy", OBJECT_POLICY
+ },
+ /* OCLASS_TRANSFORM */
+ {
+ "transform", OBJECT_TRANSFORM
}
};
@@ -1855,7 +1859,7 @@ pg_get_object_address(PG_FUNCTION_ARGS)
* exceptions.
*/
if (type == OBJECT_TYPE || type == OBJECT_DOMAIN || type == OBJECT_CAST ||
- type == OBJECT_DOMCONSTRAINT)
+ type == OBJECT_TRANSFORM || type == OBJECT_DOMCONSTRAINT)
{
Datum *elems;
bool *nulls;
@@ -1946,6 +1950,7 @@ pg_get_object_address(PG_FUNCTION_ARGS)
case OBJECT_CAST:
case OBJECT_USER_MAPPING:
case OBJECT_DEFACL:
+ case OBJECT_TRANSFORM:
if (list_length(args) != 1)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
@@ -3599,6 +3604,10 @@ getObjectTypeDescription(const ObjectAddress *object)
appendStringInfoString(&buffer, "policy");
break;
+ case OCLASS_TRANSFORM:
+ appendStringInfoString(&buffer, "transform");
+ break;
+
default:
appendStringInfo(&buffer, "unrecognized %u", object->classId);
break;
@@ -4521,6 +4530,40 @@ getObjectIdentityParts(const ObjectAddress *object,
break;
}
+ case OCLASS_TRANSFORM:
+ {
+ Relation transformDesc;
+ HeapTuple tup;
+ Form_pg_transform transform;
+ char *transformLang;
+ char *transformType;
+
+ transformDesc = heap_open(TransformRelationId, AccessShareLock);
+
+ tup = get_catalog_object_by_oid(transformDesc, object->objectId);
+
+ if (!HeapTupleIsValid(tup))
+ elog(ERROR, "could not find tuple for transform %u",
+ object->objectId);
+
+ transform = (Form_pg_transform) GETSTRUCT(tup);
+
+ transformType = format_type_be_qualified(transform->trftype);
+ transformLang = get_language_name(transform->trflang, false);
+
+ appendStringInfo(&buffer, "for %s on language %s",
+ transformType,
+ transformLang);
+ if (objname)
+ {
+ *objname = list_make1(transformType);
+ *objargs = list_make1(pstrdup(transformLang));
+ }
+
+ heap_close(transformDesc, AccessShareLock);
+ }
+ break;
+
default:
appendStringInfo(&buffer, "unrecognized object %u %u %d",
object->classId,