Hi,

A customer of ours (Enova Financial) requested the ability to describe
objects in pg_depend.  The wiki contains a simplistic SQL snippet that
does the task, but only for some of the object types, and it's rather
ugly.  It struck me that we could fulfill this very easily by exposing
the getObjectDescription() function at the SQL level, as in the attached
module.

I propose we include this as a builtin function.

Opinions?

-- 
Álvaro Herrera <alvhe...@alvh.no-ip.org>
#include "postgres.h"

#include "catalog/dependency.h"
#include "fmgr.h"
#include "utils/builtins.h"

#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif

Datum describe_object(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(describe_object);

Datum
describe_object(PG_FUNCTION_ARGS)
{
        Oid             classid = PG_GETARG_OID(0);
        Oid             objid = PG_GETARG_OID(1);
        int32   subobjid = PG_GETARG_INT32(2);
        ObjectAddress   address;
        char   *description = NULL;

        if (classid != InvalidOid)
        {
                address.classId = classid;
                address.objectId = objid;
                address.objectSubId = subobjid;

                description = getObjectDescription(&address);
        }

        if (!description || description[0] == '\0')
                PG_RETURN_NULL();

        PG_RETURN_TEXT_P(cstring_to_text(description));
}
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to