Re: Search_path pour les schemas

Lists: pgsql-fr-generale
From: philippe(dot)beaudoin(at)bull(dot)net
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Search_path pour les schemas
Date: 2008-12-17 09:14:13
Message-ID: OFEC78FCCE.2ECE61CD-ONC1257522.00313CFF@frcl.bull.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bonjour à tous,

Je m'intéresse à l'utilisation de schemas pour des bases qui contiendront
potentiellement des tables de plusieurs domaines applicatifs différents.
Les mettre dans des espaces de nomage distincts me paraît être une bonne
idée.
Je vois bien comment créer les schémas et les objets (tables, index,...)
qui iront dedans, puis en faire l'administration. Mais je m'interroge sur
la façon de spécifier le "search_path".

J'aurais plusieurs roles de connexion qui devraient avoir des
"search_paths" différents. Mais je ne maitrise pas le processus de
connexion (l'EXEC SQL CONNECT) et ne peux ajouter de requête dans
l'application (pour un SET par exemple).
J'ai vu que l'on peut préciser dans le postgresql.conf un "search_path"
différent de celui par défaut, mais il va s'appliquer bien sûr à toutes les
connexions.
En revanche, mon architecture me permet soit de définir des variables
d'environnement propres à chaque utilisateur de connexion, soit de jouer
sur les paramètres de connexion (la chaîne DBNAME=...). Mais je n'ai pas vu
dans la doc de solution dans ces 2 voies.

Bref, je suis preneur de toute idée me permettant d'avancer dans ce sens...
Merci par avance.

Cordialement. Philippe.


From: Jean-Paul Argudo <jean-paul(at)postgresqlfr(dot)org>
To: philippe(dot)beaudoin(at)bull(dot)net
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Search_path pour les schemas
Date: 2008-12-17 09:49:32
Message-ID: 4948CB2C.6030702@postgresqlfr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bonjour Philippe,

J'ai pu chercher, quelqu'un m'a posé la même problématique récemment...

jpargudo=# CREATE schema prod;
CREATE SCHEMA

jpargudo=# CREATE schema preprod;
CREATE SCHEMA

jpargudo=# select rolconfig from pg_roles where rolname ='jpargudo';
-[ RECORD 1 ]
rolconfig |

jpargudo=# alter role jpargudo set search_path to preprod, prod, public;
ALTER ROLE

jpargudo=# select rolconfig from pg_roles where rolname ='jpargudo';
-[ RECORD 1 ]------------------------------------
rolconfig | {"search_path=preprod, prod, public"}

Donc, chaque utilisateur(role au sens pg) peut avoir son propre
search_path de défini.

Hope this helps,

--
Jean-Paul Argudo
www.PostgreSQLFr.org
www.Dalibo.com