On Fri, Mar 4, 2011 at 1:48 PM, Bosco Rama <postg...@boscorama.com> wrote:

> Matt Warner wrote:
> > No luck:
> >
> > *** as postgres
> > postgres=# GRANT all on function nvl(anyelement,anyelement) to public;
> > GRANT
> > postgres=#
> >
> > *** as unprivileged user
> > offload=> select nvl(0,1);
> > ERROR:  function nvl(integer, integer) does not exist
> > LINE 1: select nvl(0,1);
> >                ^
> > HINT:  No function matches the given name and argument types. You might
> need
> > to add explicit type casts.
>
> This looks like you defined the function in template1 *after* you created
> the
> user's DB.  Or never defined it there at all.
>
> Try defining the function in the user's DB itself or, if able, recreate the
> user's DB after defining it in template1.
>
> HTH.
>
> Bosco.
>

The function cannot be defined in the user's DB because "language C" is
considered a security risk, so only the superuser can do that. Or that's
what I get from reading anyway...

Recreating the user DB is problematic because there are already tables in
place.

Matt

Reply via email to