1
0
mirror of https://github.com/postgres/postgres.git synced 2025-09-02 04:21:28 +03:00

Add transforms to pg_get_object_address and friends

This was missed when transforms were added by commit cac7658205.

Extracted from a larger patch
Author: Michael Paquier
This commit is contained in:
Alvaro Herrera
2015-06-21 16:08:49 -03:00
parent 667912aee6
commit ad89a5d115
3 changed files with 64 additions and 6 deletions

View File

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