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