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 ?