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