procedural languages and public schema - Mailing list pgsql-admin

From Francesco Dalla Ca'
Subject procedural languages and public schema
Date
Msg-id 42D50617.6010204@cineca.it
Whole thread Raw
Responses Re: procedural languages and public schema
List pgsql-admin
What are the implications between the use of a pl language and the
public schema?

When i use createlang on a database without  the public schema (dropped
for safety reason),  createlang fail with the sequent error

...
postgres@pc-dba:~> createlang -d prova2 plpgsql --echo
SELECT oid FROM pg_language WHERE lanname = 'plpgsql';
SELECT oid FROM pg_proc WHERE proname = 'plpgsql_call_handler' AND
prorettype = 'pg_catalog.language_handler'::regtype AND pronargs = 0;
SELECT oid FROM pg_proc WHERE proname = 'plpgsql_validator' AND
proargtypes[0] = 'pg_catalog.oid'::regtype AND pronargs = 1;
CREATE FUNCTION "plpgsql_call_handler" () RETURNS language_handler AS
'$libdir/plpgsql' LANGUAGE C;
CREATE FUNCTION "plpgsql_validator" (oid) RETURNS void AS
'$libdir/plpgsql' LANGUAGE C;
CREATE TRUSTED LANGUAGE "plpgsql" HANDLER "plpgsql_call_handler"
VALIDATOR "plpgsql_validator";
createlang: language installation failed: ERROR:  no schema has been
selected to create in
postgres@pc-dba:~>
...

If i recreate the public schema (as default) the createlang perform
without error.

The client 'createlang' attempt to create 2 functions on the public schema:
plxxx_call_handler
plxxx_validator

these function have got respectively null acl list, from pg_proc:

prova2=# select pg_proc.oid, proname, nspname, proacl from pg_proc,
pg_namespace where pg_namespace.nspname='public' and
pg_namespace.oid=pronamespace;
  oid   |       proname        | nspname | proacl
--------+----------------------+---------+--------
 571455 | plpgsql_call_handler | public  |
 571456 | plpgsql_validator    | public  |
(2 rows)

prova2=#

Can i create languages functions on a different schema?
This schema must be accessible for all db user?  With which privileges
(only usage)?
What's the mean of the proacl column for these functions relatively to
TRUSTED|UNTRUSTED create language clause?

===========================================

     CINECA  Via Magnanelli 6/3
    40033 Casalecchio di Reno (Bologna)

      Settore Gestione Sistemi

            Francesco Dalla Ca'
        Email  f.dallaca@cineca.it
===========================================


pgsql-admin by date:

Previous
From: Devrim GUNDUZ
Date:
Subject: Re: Help for postgresql binary installation v.8.0.3
Next
From: Tom Lane
Date:
Subject: Re: procedural languages and public schema