Cette deuxième version de la librairie parse_url pour PostgreSQL créé un nouveau type de donnée: url. C’est-à-dire que vous pouvez créer des tables avec des champs ayant pour type “url“, ce qui permet de rendre plus rapide la sélection et la récupération des différentes parties des adresses URL après création. Les fonctions parse_url(text) et parse_url(text, text) sont donc devenues parse_url(url) et parse_url(url, text).
Installer la version 2 de parse_url
Pour installer la version 2 de parse_url, il vous suffit de télécharger le code source et de le compiler pour créer un module partagé qui sera chargé par PostgreSQL. Télécharger la librairie à cette adresse:
$ mkdir parse_url && cd parse_url $ wget http://tasks.d-sites.com/attachments/download/38/parse_url-2.tar.gz $ tar -xf parse_url-2.tar.gz
Une fois téléchargé, nous allons compiler la source, c’est-à-dire créer des fichiers d’exécution propre à votre architecture :
$ make
S’il n’y a pas d’erreurs, il faut maintenant installer la librairie. Mettez vous en super-utilisateur ou tapez sudo -s puis faites:
# make install
Note: $ signifie que la ligne doit être exécutée en tant qu’utilisateur normal et # en tant que super-utilisateur (root)
Maintenant, la librairie est installée.
Attention, comme la v1, il faut apparemment PostgreSQL >= 8.4. Avec une 8.3, ça compile mais :
psql:parse_url.sql:6: ERROR: could not load library “/usr/lib/postgresql/8.3/lib/parse_url.so”: /usr/lib/postgresql/8.3/lib/parse_url.so: undefined symbol: TextDatumGetCString
Oui, tout à fait.
TextDatumGetCStringn’étant arrivé qu’avec PostgreSQL 8.4, je n’ai pas moyen de l’utiliser. Peut-être qu’en utilisant un petit#defineje pourrais l’ajouter dans PostgreSQL <= 8.4 ça… (je ne peux pas reprendre la définition de la 8.4 car elle utilise une fonction créé en 8.4).Une idée ?