On Mon, Jul 29, 2013 at 8:11 AM, John DeSoi <de...@pgedit.com> wrote:

> I was surprised to discover this today. I can work around it, but it seems
> counterintuitive. If 5 can't be parsed as a smallint, I would feel better
> if '5' was not one either.
>
>
> temp=# create or replace function itest (param smallint) returns integer
> as $$ select $1 + 5; $$ language sql;
> CREATE FUNCTION
> temp=# select itest(5);
> ERROR:  function itest(integer) does not exist
> LINE 1: select itest(5);
>                ^
> HINT:  No function matches the given name and argument types. You might
> need to add explicit type casts.
> temp=# select itest('5');
>  itest
> -------
>     10
> (1 row)
>
>

FWIW, It works if you don't rely on the implicit cast, and explicitly cast
it to smallint:

select itest(5::smallint);
 itest
-------
    10

Reply via email to