Kyle <kaf@nwlink.com> writes:
> 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.
Nope. Those numbers are int4 by default, not int2, and it won't coerce
downwards without guidance.
Consider declaring your integer version to take int4s instead of int2s,
and doing the narrowing internally if you really want it.
regards, tom lane