procedural languages and public schema

From: Francesco Dalla Ca' <f(dot)dallaca(at)cineca(dot)it>
To: pgsql-admin(at)postgresql(dot)org
Subject: procedural languages and public schema
Date: 2005-07-13 12:16:23
Message-ID: 42D50617.6010204@cineca.it
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)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(at)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(dot)dallaca(at)cineca(dot)it
===========================================

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Tom Lane 2005-07-13 14:20:23 Re: procedural languages and public schema
Previous Message Devrim GUNDUZ 2005-07-13 06:27:19 Re: Help for postgresql binary installation v.8.0.3