Re: c language functions

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: c language functions
Дата
Msg-id CA+TgmoYMUgSMn7fhByR+jT7N7c0CYT86nZyFPXjNusEUt2Sujw@mail.gmail.com
обсуждение исходный текст
Ответ на c language functions  (Rodrigo Barboza <rodrigombufrj@gmail.com>)
Ответы Re: c language functions  (Rodrigo Barboza <rodrigombufrj@gmail.com>)
Список pgsql-hackers
On Wed, Apr 3, 2013 at 11:26 AM, Rodrigo Barboza
<rodrigombufrj@gmail.com> wrote:
> Hello.
> I'm trying to create a generic add function.
> I have defined a type my_uint and it needs a '+' operator.
> This operator should work like normal int + int operation.
> The function is defined expecting arguments (my_uint, anyelement).
>
> I'm confused in retrieving the anyelement type, value and than do the add
> operation and return the correct value and type.
> I tried to use PG_GETARG_DATUM, but I don't know how to extract the value
> from it (should it be a uint32, uint64, float or double).
>
> Any tips?

Well, the information the function ends up receiving is going to
depend on how the function is declared at an SQL level.  So if you are
defining the function to take an argument of anyelement (which seems
unlikely to be a useful thing to do, but let's suppose you do it
anyway) then look at the C code for some other function that takes an
anyelement argument and look at how that function unpacks it.

Similarly, if you declare the function to take int4 argument, then go
look at the C code function that takes an int4 argument and see what
it does to unpack it.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



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

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: Proposal for Allow postgresql.conf values to be changed via SQL [review]
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Drastic performance loss in assert-enabled build in HEAD