Re: Schema name of function

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Schema name of function
Дата
Msg-id 426.1108409437@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Schema name of function  (Michael Fuhr <mike@fuhr.org>)
Список pgsql-hackers
Michael Fuhr <mike@fuhr.org> writes:
> On Mon, Feb 14, 2005 at 11:11:53AM -0500, Tom Lane wrote:
>> In C, it'd be a lot easier (and faster) to do a couple of SearchSysCache
>> calls than to use SPI to get those rows.

> The following appears to work -- does it look right, aside from the
> missing error checking?

>   tuple = SearchSysCache(PROCOID,
>                          ObjectIdGetDatum(fcinfo->flinfo->fn_oid),
>                          0, 0, 0);
>   nsoid = SysCacheGetAttr(PROCOID, tuple,
>                           Anum_pg_proc_pronamespace, &isnull);
>   schemaname = get_namespace_name(nsoid);
>   ReleaseSysCache(tuple);

That would work.  Since pronamespace is one of the fixed non-nullable
columns of pg_proc, you don't really need to use SysCacheGetAttr: you
can just map the C struct onto the tuple and grab the field directly.
nsoid = ((Form_pg_proc) GETSTRUCT(tuple))->pronamespace;

utils/cache/lsyscache.c contains lots of examples of this sort of thing.
(get_namespace_name is one, in fact.)
        regards, tom lane


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Michael Fuhr
Дата:
Сообщение: Re: getting oid of function
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Help me recovering data