Thread: BUG #3695: Pgsql does not report non existing function

BUG #3695: Pgsql does not report non existing function

From
"Roger"
Date:
The following bug has been logged online:

Bug reference:      3695
Logged by:          Roger
Email address:      ramoloney@hotmail.com
PostgreSQL version: 8.3
Operating system:   Windows
Description:        Pgsql does not report non existing function
Details:

I've looked at 8.3 on windows and I'm using 8.2.5 actively for a large
company project on linux.

I have a big problem with Postgres not reporting functions that do not
exist. It makes developing on large projects very very awkward.

For example, if I have a pgsql function which makes a call to
   x := DAY(timestamp);

This is not reported. It does not exist. Likewise, if I had a function
MyFunc which does exist which requires 3 parameters, the following also are
not reported:

  x := myfunc();
  x := myfunc(p1)
  x := myfunc(p2);

Sureley, the plgsql parser SHOULD report this. It occurs frequently when
porting to postgres from existing database systems.

Am I missing some switch that I can turn on ?
Thanks in advance.

Re: BUG #3695: Pgsql does not report non existing function

From
Tom Lane
Date:
"Roger" <ramoloney@hotmail.com> writes:
> Description:        Pgsql does not report non existing function

Works fine for me:

regression=# create function foo() returns int as $$
regression$# declare x int;
regression$# begin
regression$#   x := nosuchfunc(42);
regression$# end$$ language plpgsql;
CREATE FUNCTION
regression=# select foo();
ERROR:  function nosuchfunc(integer) does not exist
LINE 1: SELECT  nosuchfunc(42)
                ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
QUERY:  SELECT  nosuchfunc(42)
CONTEXT:  PL/pgSQL function "foo" line 3 at assignment
regression=#

            regards, tom lane