-
PQstatus
-
Renvoie l'état de la connexion.
ConnStatusType PQstatus(const PGconn *conn);
Le statut peut faire partie d'un certain nombre de valeurs.
Néanmoins, seules deux ne concernent pas les procédures de
connexion asynchrone : CONNECTION_OK
et CONNECTION_BAD. Une bonne connexion
de la base de données a l'état CONNECTION_OK. Une tentative échouée de
connexion est signalée par le statut CONNECTION_BAD. D'habitude, un état OK restera
ainsi jusqu'à PQfinish mais un échec
de communications pourrait résulter en un statut changeant
prématurément CONNECTION_BAD. Dans ce
cas, l'application pourrait essayer de récupérer en appelant
PQreset.
Voir l'entrée de PQconnectStart et de
PQconnectPoll en regard aux autres
codes de statut, qui pourraient être vus.
-
PQtransactionStatus
-
Renvoie l'état actuel de la transaction du serveur.
PGTransactionStatusType PQtransactionStatus(const PGconn *conn);
Le statut peut être PQTRANS_IDLE
(actuellement inactif), PQTRANS_ACTIVE
(une commande est en cours), PQTRANS_INTRANS (inactif, dans un bloc valide de
transaction) ou PQTRANS_INERROR
(inactif, dans un bloc de transaction échoué). PQTRANS_UNKNOWN est reporté si la connexion est
mauvaise. PQTRANS_ACTIVE est reporté
seulement quand une requête a été envoyée au serveur mais
qu'elle n'est pas terminée.
Attention
PQtransactionStatus donnera des
résultats incorrects lors de l'utilisation d'un serveur
PostgreSQL™ 7.3 qui
a désactivé le paramètre autocommit. La fonctionnalité autocommit,
côté serveur, est obsolète et n'existe pas dans les
versions serveur ultérieures.
-
PQparameterStatus
-
Recherche un paramétrage actuel du serveur.
const char *PQparameterStatus(const PGconn *conn, const char *paramName);
Certaines valeurs de paramètres sont reportées par le serveur
automatiquement ou lorsque leur valeurs changent. PQparameterStatus peut être utilisé pour
interroger ces paramétrages. Il renvoie la valeur actuelle d'un
paramètre s'il est connu et NULL si
le paramètre est inconnu.
Les paramètres reportés pour la version actuelle incluent
server_version, server_encoding, client_encoding, is_superuser, session_authorization, datestyle, TimeZone,
integer_datetimes et standard_conforming_strings. (server_encoding, TimeZone et integer_datetimes n'étaient pas rapportés dans
les versions antérieures à la 8.0 ; standard_conforming_strings n'était pas rapporté
dans les versions antérieures à la 8.1). Notez que server_version, server_encoding et integer_datetimes ne peuvent pas changer après
le lancement du serveur.
Les serveurs utilisant un protocole antérieur à la 3.0 ne
reportent pas la configuration des paramètres mais libpq inclut la logique pour obtenir des
valeurs pour server_version et
client_encoding. Les applications sont
encouragées à utiliser PQparameterStatus plutôt qu'un code
ad-hoc
modifiant ces valeurs
(néanmoins, attention, les connexions pré-3.0, changeant
client_encoding via
SET
après le lancement de la
connexion, ne seront pas reflétées par PQparameterStatus). Pour server_version, voir aussi PQserverVersion, qui renvoie l'information dans
un format numérique qui est plus facile à comparer.
Si aucune valeur n'est indiquée pour standard_conforming_strings, les applications
pourraient supposer qu'elle vaut off,
c'est-à-dire que les antislashs sont traités comme des
échappements dans les chaînes littérales. De plus, la présence
de ce paramètre pourrait être pris comme une indication que la
syntaxe d'échappement d'une chaîne (E'...') est acceptée.
Bien que le pointeur renvoyé est déclaré const, il pointe en fait vers un stockage
mutable associé avec la structure PGconn. Il est déconseillé de supposer que le
pointeur restera valide pour toutes les requêtes.
-
PQprotocolVersion
-
Interroge le protocole interface/moteur lors de son
utilisation.
int PQprotocolVersion(const PGconn *conn);
Les applications souhaitent utiliser ceci pour déterminer si
certaines fonctionnalités sont supportées. Actuellement, les
seules valeurs possible sont 2 (protocole 2.0), 3 (protocole
3.0) ou zéro (mauvaise connexion). Ceci ne changera pas après
la fin du lancement de la connexion mais cela pourrait être
changé théoriquement avec une réinitialisation de la connexion.
Le protocole 3.0 sera normalement utilisé lors de la
communication avec les serveurs PostgreSQL™ 7.4 ou ultérieures ; les
serveurs antérieurs à la 7.4 supportent uniquement le protocole
2.0 (le protocole 1.0 est obsolète et non supporté par
libpq).
-
PQserverVersion
-
Renvoie un entier représentant la version du moteur.
int PQserverVersion(const PGconn *conn);
Les applications pourraient utiliser ceci pour déterminer la
version du serveur de la base de données auquel ils sont
connectés. Le numéro est formé en convertissant les nombres
majeur, mineur et de révision en un nombre à deux chiffres
décimaux et en leur assemblant. Par exemple, la version 8.1.5
sera renvoyée en tant que 80105 et la version 8.2 sera renvoyée
en tant que 80200 (les zéros au début ne sont pas affichés).
Zéro est renvoyée si la connexion est mauvaise.
-
PQerrorMessage
-
Renvoie le dernier message d'erreur généré par une opération
sur la connexion.
char *PQerrorMessage(const PGconn* conn);
Pratiquement toutes les fonctions libpq initialiseront un message pour
PQerrorMessage en cas d'échec. Notez
que, par la convention libpq,
un résultat non vide de PQerrorMessage inclura un retour chariot à la
fin. L'appelant ne devrait pas libérer directement le résultat.
Il sera libéré quand la poignée PGconn associée est passée à PQfinish. Vous ne devriez pas supposer que la
chaîne résultante reste identique suite à toutes les opérations
sur la structure PGconn.
-
PQsocket
-
Obtient le descripteur de fichier du socket de la connexion au
serveur. Un descripteur valide sera plus grand ou égal à 0 ; un
résultat de -1 indique qu'aucune connexion au serveur n'est
actuellement ouverte (ceci ne changera pas lors de l'opération
normale mais pourra changer lors d'une configuration de
l'initialisation ou lors d'une réinitialisation).
int PQsocket(const PGconn *conn);
-
PQbackendPID
-
Renvoie l'identifiant du processus (PID) du serveur gérant cette connexion.
int PQbackendPID(const PGconn *conn);
Le PID du moteur est utile
pour des raisons de débogage et pour la comparaison avec les
messages
NOTIFY
(qui incluent le PID du
processus serveur lançant la notification). Notez que le
PID appartient à un
processus exécuté sur l'hôte du serveur de bases de données et
non pas sur l'hôte local !
-
PQgetssl
-
Retourne la structure SSL utilisée dans la connexion ou NULL si
SSL n'est pas utilisé.
SSL *PQgetssl(const PGconn *conn);
Cette structure peut être utilisée pour vérifier les niveaux de
cryptage, pour vérifier les certificats du serveur, et plus.
Référez-vous à la documentation d'OpenSSL™ pour plus d'informations
sur cette structure.
Vous pouvez définir USE_SSL pour
obtenir le bon prototype de cette fonction. Faire cela inclura
automatiquement ssl.h à partir
d'OpenSSL™.