function overloading / ambigous functions - Mailing list pgsql-general

From Kyle
Subject function overloading / ambigous functions
Date
Msg-id 15012.3276.14903.362526@ip146.usw5.rb1.bel.nwlink.com
Whole thread Raw
Responses Re: function overloading / ambigous functions
Re: function overloading / ambigous functions
List pgsql-general
I'm having some difficulty with overloading functions.  I've created a
function that normally takes int2's.  This works fine, but then I
decided to overload it with a version that takes float8 as input.  The
problem arises because the float8 version seems to be called every
time, unless an argument is explicitly cast to int2.  Given:

CREATE FUNCTION my_search(int2, int2, int2, int2)
  RETURNS int4 AS '/home/kaf/lib/my_search.so',
    'my_search' LANGUAGE 'c';

CREATE FUNCTION my_search(float8, float8, float8, float8)
  RETURNS int4 AS '/home/kaf/lib/my_search.so',
    'my_search_float8' LANGUAGE 'c';

select my_search(7879,3727,3061,2502);

this uses the float8 implementation.  I'd expect the int2
implementation to be used since none of the arguments contain floats.
Is this the expected behavior?  Of course, if I explicitly cast any
argument to an int2, the int2 function is called.

Thanks,
-Kyle


pgsql-general by date:

Previous
From: Michelle Murrain
Date:
Subject: Getting lengths of variable fields
Next
From: Geoff Russell
Date:
Subject: Ouch. Inheritance hurts