diff options
| author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2015-06-21 16:08:49 -0300 |
|---|---|---|
| committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2015-06-21 16:08:49 -0300 |
| commit | ad89a5d115b3b4025f3c135f95f722e7e4becf13 (patch) | |
| tree | 73e95389c4b9bc9b428264db3712485ba819b73d /src/backend/catalog | |
| parent | 667912aee649c3608e003568e4b47d95251b1c8c (diff) | |
| download | postgresql-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.c | 45 |
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, |
