#1 Thu 22 March 2012 14:43
- Anaïs Just
- Participant actif
- Lieu: Montreuil
- Date d'inscription: 10 Dec 2007
- Messages: 131
problème chargement langage plr pour postgresql 9.0
Bonjour à tous,
J'essaie de charger la librairie R pour postgresql 9.0. (plr). Je suis sous windows 32bitts
J'ai trouvé les indications pour le faire à cette adresse:
file:///F:/TUTORIELS_et_EXECUTABLES/POS … r-cree.htm
et la librairie plr.dll accompagnée de la fonction de lancement plr.sql à cette adresse:
http://www.joeconway.com/plr/
Le problème c'est que quand je lance plr.sql (en ligne de commande ou directement sous pgadmin) j'ai le message d'erreur suivant:
ERREUR: n'a pas pu charger la bibliothèque « C:/Program Files/PostgreSQL/9.0/lib/plr.dll » : unknown error 126
J'ai été regarder sur le net et je trouve pleins de gens qui ont eu des soucis pour charger perl ou python mais je n'ai pas trouvé de réponse.
Je me demande si le problème ne vient pas de la version de R que j'ai déjà sur ma machine (j'ai la 2.8.0)?
Quelqu'un a une idée?
Merci d'avance!
Anaïs
Hors ligne
#2 Thu 22 March 2012 15:16
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3175
- Site web
Re: problème chargement langage plr pour postgresql 9.0
Bonjour,
Je me demande si le problème ne vient pas de la version de R que j'ai déjà sur ma machine (j'ai la 2.8.0)?
Peut-être devriez vous supprimer la 2.8.0 du répertoire
C:/Program Files/PostgreSQL/9.0/lib/
et la remplacer par 8.3.0.13
?
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#3 Thu 22 March 2012 15:29
- Anaïs Just
- Participant actif
- Lieu: Montreuil
- Date d'inscription: 10 Dec 2007
- Messages: 131
Re: problème chargement langage plr pour postgresql 9.0
Non finalement je pense que ce n'est pas lié. J'avais installé le logiciel R mais ici il s'agit de la librairie plr pour postgres...En plus j'ai testé l'installation de plpython et j'ai le même message d'erreur (bon j'ai aussi python qui est déjà installé sur ma machine pour d'autres applis...) vraiment je ne comprends pas...
CREATE PROCEDURAL LANGUAGE 'plpythonu' HANDLER plpython_call_handler;
NOTICE: utilisation des informations de pg_pltemplate au lieu des paramètres de
CREATE LANGUAGE
ERREUR: n'a pas pu charger la bibliothèque « C:/Program Files/PostgreSQL/9.0/lib/plpython.dll » : unknown error 126
et pourtant j'ai vérifié, la dll existe bien dans mon dossier lib...
pffff...
Dernière modification par Anaïs Just (Thu 22 March 2012 15:30)
Hors ligne
#4 Thu 22 March 2012 16:25
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1538
Re: problème chargement langage plr pour postgresql 9.0
Non finalement je pense que ce n'est pas lié. J'avais installé le logiciel R mais ici il s'agit de la librairie plr pour postgres...En plus j'ai testé l'installation de plpython et j'ai le même message d'erreur (bon j'ai aussi python qui est déjà installé sur ma machine pour d'autres applis...) vraiment je ne comprends pas...
CREATE PROCEDURAL LANGUAGE 'plpythonu' HANDLER plpython_call_handler;
NOTICE: utilisation des informations de pg_pltemplate au lieu des paramètres de
CREATE LANGUAGE
ERREUR: n'a pas pu charger la bibliothèque « C:/Program Files/PostgreSQL/9.0/lib/plpython.dll » : unknown error 126
et pourtant j'ai vérifié, la dll existe bien dans mon dossier lib...
pffff...
Les espaces dans "program files" ne generaient pas ?
Nicolas
Hors ligne
#5 Thu 22 March 2012 16:33
- Anaïs Just
- Participant actif
- Lieu: Montreuil
- Date d'inscription: 10 Dec 2007
- Messages: 131
Re: problème chargement langage plr pour postgresql 9.0
Merci je viens de tester...si je place la librairie dans C et que je change le chemin dans les instructions ça donne la même chose
ERREUR: n'a pas pu charger la bibliothèque « C:/plr.dll » : unknown error 126
arg...
Hors ligne
#6 Thu 22 March 2012 16:55
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1538
Re: problème chargement langage plr pour postgresql 9.0
Merci je viens de tester...si je place la librairie dans C et que je change le chemin dans les instructions ça donne la même chose
ERREUR: n'a pas pu charger la bibliothèque « C:/plr.dll » : unknown error 126
arg...
Il se peut que le liens vers les autres dll nécessaires soit cassé, ou que ces DLL ne soient pas trouvées.
Peut etre le programme dependencyWalker (http://www.dependencywalker.com/) vous permettrait-il de voir le probleme ?
Nico
Hors ligne
#7 Thu 22 March 2012 17:22
- Anaïs Just
- Participant actif
- Lieu: Montreuil
- Date d'inscription: 10 Dec 2007
- Messages: 131
Re: problème chargement langage plr pour postgresql 9.0
Merci Nicolas,
J'ai lancé dependency walker (voir les deux captures d'écran jointes).
Dans le premier lancement le programme m'indique
1)qu'il manque POSTGRES.exe???
1) qu'il manque la librairie R.dll ->j'ai été la chercher dans les lib de R sous programme files et je l'ai installé dans lib de postgres
Une fois la modif faite je relance independency walker qui m'indique toujours qu'il manque
POSTGRES.exe et un tas d'autres librairies que je pense pouvoir trouver dans les lib de R.
Je ne comprends pas pourquoi la plr.dll a besoin de POSTGRES.exe ...
Dernière modification par Anaïs Just (Thu 22 March 2012 17:22)
Hors ligne
#8 Tue 27 March 2012 10:18
- Anaïs Just
- Participant actif
- Lieu: Montreuil
- Date d'inscription: 10 Dec 2007
- Messages: 131
Re: problème chargement langage plr pour postgresql 9.0
Bonjour à tous,
Finalement j'ai trouvé l'erreur...ou les erreurs... déjà grâce à l'adresse suivante:
http://www.bostongis.com/PrinterFriendl … _plr_tut01
je me suis rendu compte qu'il fallait éditer les variables d'environnement pour R, je l'ai aussi fait pour postgresql.
En parallèle, mais du coup je ne sais pas si c'était utile, j'ai été piocher dans les bin de R les dll qui manquaient dans le dossier lib de postgresql (grâces aux indications de dependency walker).
Par contre je n'arrivais toujours pas à envoyer le fichier plr.sql car j'avais des messages d'erreur du type
ERREUR: le type « plr_environ_type » existe déjà
********** Erreur **********
ERREUR: le type « plr_environ_type » existe déjà
État SQL :42710
En fait il faut copier/coller le fichier plr.sql dans une fenêtre sql de pgadminIII et lancer une par une les fonctions. Car, je ne sais pas pourquoi, certains types comme "plr_environ_type" existent déjà et cela bloque l'exécution des fonction.
Voilà.
A présent j'ai bien plr d'installé sous postgresql...!
ouff!!
Bonne journée à tous.
SET autocommit TO 'on';
CREATE FUNCTION plr_call_handler()
RETURNS LANGUAGE_HANDLER
AS '$libdir/plr' LANGUAGE C;
CREATE LANGUAGE plr HANDLER plr_call_handler;
CREATE OR REPLACE FUNCTION reload_plr_modules ()
RETURNS text
AS '$libdir/plr','reload_plr_modules'
LANGUAGE 'C';
CREATE OR REPLACE FUNCTION install_rcmd (text)
RETURNS text
AS '$libdir/plr','install_rcmd'
LANGUAGE 'C' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION install_rcmd (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_singleton_array (float8)
RETURNS float8[]
AS '$libdir/plr','plr_array'
LANGUAGE 'C' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_push (_float8, float8)
RETURNS float8[]
AS '$libdir/plr','plr_array_push'
LANGUAGE 'C' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_accum (_float8, float8)
RETURNS float8[]
AS '$libdir/plr','plr_array_accum'
LANGUAGE 'C';
CREATE TYPE plr_environ_type AS (name text, value text);
CREATE OR REPLACE FUNCTION plr_environ ()
RETURNS SETOF plr_environ_type
AS '$libdir/plr','plr_environ'
LANGUAGE 'C';
REVOKE EXECUTE ON FUNCTION plr_environ() FROM PUBLIC;
CREATE TYPE r_typename AS (typename text, typeoid oid);
CREATE OR REPLACE FUNCTION r_typenames()
RETURNS SETOF r_typename AS '
x <- ls(name = .GlobalEnv, pat = "OID")
y <- vector()
for (i in 1:length(x)) {y[i] <- eval(parse(text = x[i]))}
data.frame(typename = x, typeoid = y)
' language 'plr';
CREATE OR REPLACE FUNCTION load_r_typenames()
RETURNS text AS '
sql <- "select upper(typname::text) || ''OID'' as typename, oid from pg_catalog.pg_type where typtype = ''b'' order by typname"
rs <- pg.spi.exec(sql)
for(i in 1:nrow(rs))
{
typobj <- rs[i,1]
typval <- rs[i,2]
if (substr(typobj,1,1) == "_")
typobj <- paste("ARRAYOF", substr(typobj,2,nchar(typobj)), sep="")
assign(typobj, typval, .GlobalEnv)
}
return("OK")
' language 'plr';
CREATE TYPE r_version_type AS (name text, value text);
CREATE OR REPLACE FUNCTION r_version()
RETURNS setof r_version_type as '
cbind(names(version),unlist(version))
' language 'plr';
CREATE OR REPLACE FUNCTION plr_set_rhome (text)
RETURNS text
AS '$libdir/plr','plr_set_rhome'
LANGUAGE 'C' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION plr_set_rhome (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_unset_rhome ()
RETURNS text
AS '$libdir/plr','plr_unset_rhome'
LANGUAGE 'C';
REVOKE EXECUTE ON FUNCTION plr_unset_rhome () FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_set_display (text)
RETURNS text
AS '$libdir/plr','plr_set_display'
LANGUAGE 'C' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION plr_set_display (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_get_raw (bytea)
RETURNS bytea
AS '$libdir/plr','plr_get_raw'
LANGUAGE 'C' WITH (isstrict);
Hors ligne
#9 Tue 27 March 2012 12:14
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3175
- Site web
Re: problème chargement langage plr pour postgresql 9.0
Merci pour le suivi !
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne