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.
John DeSoi, Ph.D.
psql (9.2.4)
Type "help" for help.
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)