Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-admin by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group