PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 10/09/2017 22:43:08

skylendar
Membre

valeurs binaires de tableaux

Comme toujours, bonsoir et merci de lire cette question et d'y répondre si vous pouvez.

PostgreSQL peut stocker des tableaux de nombres dans une base, mais l'extraction des valeurs (typiquement au moyen d'un SELECT) retourne une chaîne de caractères '{n1, n2, n3...}'.

Jusqu'ici, rien de nouveau. Pourtant il semble judicieux, quand on travaille avec des tableaux de nombres depuis le C ou un autres langage, de recevoir directement ledit tableau et non une chaîne de caractères à analyser. Question de performance et de risque de bug dans l'analyse.

Est-il possible lors d'une requête sql, de recevoir directement la valeur binaire d'un tableau, et ce avec une librairie standard de postgresql, libpq ou une autres ?

Merci encore de lire cette question.

Hors ligne

#2 11/09/2017 22:24:36

dverite
Membre

Re : valeurs binaires de tableaux

Il est possible de demander du binaire avec un curseur binaire, indépendamment de l'interface côté client:

par exemple:

BEGIN;
DECLARE c binary cursor for select array[1,2]::int[];
FETCH FROM c;   -- le résultat sera en binaire
...
END;

Mais la plupart des interfaces ne savent pas quoi faire avec du binaire.

En C on peut utiliser PQexecParams() et autres fonctions de la même génération qui permettent (sans utiliser de curseur) de demander un résultat en binaire, et aussi de passer des paramètres $1, $2,...  en binaire.
Mais l'interprétation du résultat reste à la charge du programmeur. Chaque type a un encodage binaire spécifique, documenté dans les sources, mais il y a une bibliothèque idéale pour ça: http://libpqtypes.esilo.com/

Hors ligne

#3 12/09/2017 22:31:49

skylendar
Membre

Re : valeurs binaires de tableaux

C'est une idée... je vais essayer.

Merci pour la suggestion.

Hors ligne

#4 13/09/2017 09:46:47

genamiga
Membre

Re : valeurs binaires de tableaux

L'interface JDBC permet de lire un tableau via getArray d'un resultset...

resultset.getArray("nom_colonne)
Puis on on cast le "array".

Il y a surement qlq chose de similaire en C...non ?

Hors ligne

#5 14/09/2017 22:49:31

skylendar
Membre

Re : valeurs binaires de tableaux

A ma connaissance non. Il se peut d'ailleurs que l'interface jdbc récupère les valeurs en ascii et fasse la conversion en binaire.

Hors ligne

Pied de page des forums