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 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers