Re: Dynamic function execution?

Поиск
Список
Период
Сортировка
От Nick Johnson
Тема Re: Dynamic function execution?
Дата
Msg-id 998B3572-AE18-476D-9453-FBEDD0A440A2@notdot.net
обсуждение исходный текст
Ответ на Re: Dynamic function execution?  (Michael Fuhr <mike@fuhr.org>)
Ответы Re: Dynamic function execution?
Список pgsql-general
On 14/03/2006, at 12:05 AM, Michael Fuhr wrote:

> On Mon, Mar 13, 2006 at 10:45:47PM -0800, Nick Johnson wrote:
>
>> Can anyone provide me with some direction on how to write a function
>> I can load into postgres that will execute a function specified by
>> OID (or regproc/regprocedure) at runtime, with type safety? I've been
>> able to write such a function in C, but I was unable to figure out
>> how to determine the parameters that the specified function expects,
>> so I can prevent calling a function that doesn't match the expected
>> signature (which segfaults postgres).
>>
>
> Does the calling function have to be written in C?  In PL/pgSQL you
> could easily query pg_proc with the oid to get the called function's
> name, argument types, etc., then build an appropriate string to
> EXECUTE.

I considered this, but I'd rather not do it by string manipulation
and dynamic SQL - it seems a kludge.

> In C you could use SearchSysCache() and SysCacheGetAttr();
> search through the source code for examples of calls to those
> functions with a first argument of PROCOID.

Thanks for the tips.

>
> Why do you need to do this?  What problem are you trying to solve?
>

I want to associate Postgres functions with rows of a table (eg, a
table column of datatype regproc or regprocedure) and be able to
execute the function associated with that  row in a query.

-Nick Johnson

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

Предыдущее
От: Bryan White
Дата:
Сообщение: Resetting priveleges on a table
Следующее
От: Guy Fraser
Дата:
Сообщение: Re: Wisconsin Circuit Court Access (WCCA) on PostgreSQL