plusieurs serveurs Postgres : accès par libpq ?

Le
Frédéric BOITEUX
Bonjour,

Sur une machine Debian Etch, j'ai plusieurs serveurs Postgresql (en
différentes versions) qui gèrent chacun des bases de données. Pour un
utilisateur, il a le choix entre plusieurs serveurs, comme on peut le
voir avec la commande pg_lsclusters. Je peux sélectionner le bon
« cluster » dans des commandes comme psql (avec l'option « --clus=
ter
<version>/<nom de la base> », mais en revanche, je n'y arrive pas dans
un programme C lié à la bibliothèque libpq : en effet, je n'ai pas
trouvé l'équivalent dans l'API C de l'option --cluster C'est sans
doute normal vu que c'est un ajout de Debian, mais j'aimerais savoir
comment accéder à une base précise avec cette bibliothèque libpq ?

Merci de vos lumières,
Fred.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Oliver Elphick
Le #9618431
On Wed, 2007-10-17 at 16:04 +0200, Frédéric BOITEUX wrote:
Bonjour,

Sur une machine Debian Etch, j'ai plusieurs serveurs Postgresql (en
différentes versions) qui gèrent chacun des bases de donné es. Pour un
utilisateur, il a le choix entre plusieurs serveurs, comme on peut le
voir avec la commande pg_lsclusters. Je peux sélectionner le bon
« cluster » dans des commandes comme psql (avec l'option « --cluster
<version>/<nom de la base> », mais en revanche, je n'y arrive pas da ns
un programme C lié à la bibliothèque libpq : en effet, je n'ai pas
trouvé l'équivalent dans l'API C de l'option --cluster... C'est sans
doute normal vu que c'est un ajout de Debian, mais j'aimerais savoir
comment accéder à une base précise avec cette bibliothà ¨que libpq ?



Il faut trouver le port de chaque cluster. Il n'y a pas de fonction
bibliothèque pour accéder aux clusters ; alors, on doit utiliser une
commande convenable, telle que :

pg_lsclusters | grep '^version *cluster ' | awk '{print $3}'

On peut appeler son programme avec le resultat de cette commande comme
port. Sans doute, le programme aura une option pour ça. Dans le
programme il faut passer le port au PQconnectdb(). Enveloppe tout dans
un script :

#!/bin/bash
VERSION=$1
CLUSTER=$2
mon_programme -p $( pg_lsclusters |
grep "^$VERSION *$CLUSTER " |
awk '{print $3}' )

--
Oliver Elphick
Isle of Wight http://www.lfix.co.uk/oliver
GPG: 1024D/A54310EA 92C8 39E7 280E 3631 3F0E 1EC0 5664 7A2F A543 10EA
=================== =====================
Do you want to know God? http://www.lfix.co.uk/knowing_god.html


--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Frédéric BOITEUX
Le #9618391
Le mer 17 oct 2007 23:07:37 CEST, Oliver Elphick écrit :

Il faut trouver le port de chaque cluster. Il n'y a pas de fonction
bibliothèque pour accéder aux clusters ; alors, on doit utiliser une
commande convenable, telle que :

pg_lsclusters | grep '^version *cluster ' | awk '{print $3}'

On peut appeler son programme avec le resultat de cette commande comme
port. Sans doute, le programme aura une option pour ça. Dans le
programme il faut passer le port au PQconnectdb(). Enveloppe tout dans
un script :

#!/bin/bash
VERSION=$1
CLUSTER=$2
mon_programme -p $( pg_lsclusters |
grep "^$VERSION *$CLUSTER " |
awk '{print $3}' )



Ok, j'hésitais à faire ainsi, mais puisqu'il n'y a pas (pour
l'instant ?) d'alternative, je vais suivre le conseil.

Bonne journée,
Fred.
Oliver Elphick
Le #9618291
On Thu, 2007-10-18 at 09:10 +0200, Frédéric BOITEUX wrote:
Le mer 17 oct 2007 23:07:37 CEST, Oliver Elphick écrit :



Enveloppe tout dans
> un script :




Ok, j'hésitais à faire ainsi, mais puisqu'il n'y a pas (pour
l'instant ?) d'alternative, je vais suivre le conseil.



Je crois que jusqu'à présent personne n'a jamais demander l'API C pour
les clusters.

On peut le contribuer...

--
Oliver Elphick
Isle of Wight http://www.lfix.co.uk/oliver
GPG: 1024D/A54310EA 92C8 39E7 280E 3631 3F0E 1EC0 5664 7A2F A543 10EA
=================== =====================
Do you want to know God? http://www.lfix.co.uk/knowing_god.html


--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Publicité
Poster une réponse
Anonyme