Vous n'êtes pas identifié(e).

#1 27/09/2013 16:30:34

tig12
Membre

extension hstore valable pour tous les schemas d'une base (9.1)

Bonjour,

je cherche à installer l'extension hstore et à pouvoir l'utiliser sur tous les schemas d'une base
voila ce que j'ai essayé :

createdb dbtest
psql dbtest
dbtest=# create extension hstore;
WARNING:  => is deprecated as an operator name
DETAIL:  This name may be disallowed altogether in future versions of PostgreSQL.
CREATE EXTENSION
dbtest=# create table toto(fields hstore);
CREATE TABLE

jusque là tout va bien, je peux utiliser hstore sur le schema public
maintenant, j'essaye de l'utiliser sur un autre schema :

dbtest=# create schema test1;
CREATE SCHEMA
dbtest=# set schema 'test1';
SET
dbtest=# create table toto1(fields hstore);
ERROR:  type "hstore" does not exist
LINE 1: create table toto1(fields hstore);

j'arrive à utiliser hstore sur le schema test1 en faisant :

dbtest=# alter extension hstore set schema test1;
ALTER EXTENSION
dbtest=# create table toto1(fields hstore);
CREATE TABLE

ok, mais hstore ne marche plus sur le schema 'public' :

dbtest=# set schema 'public';
SET
dbtest=# create table toto2(fields hstore);
ERROR:  type "hstore" does not exist
LINE 1: create table toto2(fields hstore);

il faut de nouveau faire un alter extension

dbtest=# alter extension hstore set schema public;
ALTER EXTENSION
dbtest=# create table toto2(fields hstore);
CREATE TABLE

Donc ma question est : existe-t-il un moyen de faire fonctionner hstore sur tous les schemas d'une base ?
J'ai essayé aussi :

alter extension hstore add schema test1;

mais ça ne permet pas de passer d'un schema à l'autre en utilisant hstore sans faire un alter extension à chaque fois.

Hors ligne

#2 27/09/2013 16:37:11

rjuju
Administrateur

Re : extension hstore valable pour tous les schemas d'une base (9.1)

Bonjour,

il suffit de préfixer le nom du schéma (par exemple CREATE TABLE toto(field public.hstore); ), ou alors utiliser plusieurs schémas dans le search_path (par exemple SET search_path 'test1,public';), auquel cas la recherche se fera dans l'ordre ce des schémas.

Hors ligne

#3 27/09/2013 17:12:36

tig12
Membre

Re : extension hstore valable pour tous les schemas d'une base (9.1)

Impeccable
j'ai essayé, les deux solutions marchent.
la syntaxe pour set search path est

set search_path to test1,public;

Merci beaucoup

Hors ligne

Pied de page des forums