Why not useful? If I don't make it receive anyelement, I will have to create an add function for each type. Correct me if I'm wrong.
On Wed, Apr 3, 2013 at 2:27 PM, Robert Haas <robertmh...@gmail.com> wrote: > On Wed, Apr 3, 2013 at 11:26 AM, Rodrigo Barboza > <rodrigombu...@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 >