Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

plusieurs serveurs Postgres : accès par libpq ?

3 réponses
Avatar
Frédéric BOITEUX
Bonjour,

Sur une machine Debian Etch, j'ai plusieurs serveurs Postgresql (en
diff=E9rentes versions) qui g=E8rent chacun des bases de donn=E9es. Pour un
utilisateur, il a le choix entre plusieurs serveurs, comme on peut le
voir avec la commande pg_lsclusters. Je peux s=E9lectionner le bon
=AB=A0cluster=A0=BB dans des commandes comme psql (avec l'option =AB --clus=
ter
<version>/<nom de la base> =BB, mais en revanche, je n'y arrive pas dans
un programme C li=E9 =E0 la biblioth=E8que libpq : en effet, je n'ai pas
trouv=E9 l'=E9quivalent 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=E9der =E0 une base pr=E9cise avec cette biblioth=E8que libpq ?

Merci de vos lumi=E8res,
Fred.

3 réponses

Avatar
Oliver Elphick
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.
Avatar
Frédéric BOITEUX
Le mer 17 oct 2007 23:07:37 CEST, Oliver Elphick a
é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.
Avatar
Oliver Elphick
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 a
é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.