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 17/10/2012 17:55:47

pljavabruno
Membre

différence concrète entre une extension et un langage

Bonjour à tous et à toutes,

je lis la documentation 9.1 de postgresql  depuis un bout de temps et je voulais savoir la différence concrète qui existe entre  EXTENSION  et LANGAGE,
précisement  entre create extension et create langage

Merci

Hors ligne

#2 17/10/2012 18:20:42

rjuju
Administrateur

Re : différence concrète entre une extension et un langage

Bonjour,
un LANGUAGE est un langage procédural, utilisable avec postgres dans des procédures stockées (pl/pgsql,pl/java ...).

une EXTENSION est l'évolution des modules contrib existant jusqu'en 9.0. Cela peut regrouper des tables, des procédures stockées en différents langages afin d'ajouter de nouvelles fonctionnalités (dblink, pg_crypto ...). La plupart des LANGUAGE sont maintenant transformés en extensions, et s'installent coomme tels (le CREATE LANGUAGE sera fait par le script de l'extension).

Hors ligne

#3 17/10/2012 18:58:03

pljavabruno
Membre

Re : différence concrète entre une extension et un langage

Merci pour votre disponibilité,
si je comprend bien:

1- (le CREATE LANGUAGE sera fait par le script de l'extension)   est à dire que  CREATE EXTENSION regorge ou  inclut   CREATE EXTENSION langname FROM unpackaged ?
c'est à dire au lieu de create language   on fait plutot create extension ?

2- j'ai installé pl/java  dans postgresql 8.4 sans problème  mais quand je cree mes foncvtions tout marche bien, mais quand j'appel une de ces fonctions, j'ai l'érreur suivante :
ERREUR:  Failed to create Java VM

********** Erreur **********

ERREUR: Failed to create Java VM
État SQL :XX000

j'utilise le JDK  1.7   est ce que ce problème peut etre lié  à la version  du jdk ?

je compte déinstaller la 1.7  pour installer la 1.5

quelqu'un peut-il m'orienter à ces sujets ?

Merci

Dernière modification par pljavabruno (17/10/2012 19:00:20)

Hors ligne

#4 18/10/2012 09:24:56

rjuju
Administrateur

Re : différence concrète entre une extension et un langage

Cela dépend si le langage est passé en extension. Prenez par exemple le script de création de l'extension plpgsql:

CREATE PROCEDURAL LANGUAGE plpgsql;
COMMENT ON PROCEDURAL LANGUAGE plpgsql IS 'PL/pgSQL procedural language';

Pour l'erreur pl/java, avez vous essayez de configurer LD_LIBRARY_PATH pour postgres ?
Il devrait ressembler à ça : LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/i386:$JAVA_HOME/jre/lib/i386/client

Hors ligne

#5 18/10/2012 09:39:04

pljavabruno
Membre

Re : différence concrète entre une extension et un langage

Merci   pour cette contribution,

où est ce que je dois configuré     LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/i386:$JAVA_HOME/jre/lib/i386/client, ?

dans les variables d'environnement j'ai mis ceci 
path=
H:\Program Files\Java\jdk1.7.0\bin;
H:\Program Files\Java\jre7\bin;
H:\Program Files\Java\jre7\bin\client;
H:\Program Files\Java\jdk1.7.0\lib;
H:\Program Files\PostgreSQL\9.1\share\pljava


est la meme chose ?

Merci

Hors ligne

#6 18/10/2012 09:48:12

rjuju
Administrateur

Re : différence concrète entre une extension et un langage

Ah vous êtes sous windows. Je suppose qu'il vous faut ouvrir la session postgres afin de modifier ou d'ajouter cette variable d'environnement, puis de relancer postgres.

Hors ligne

#7 18/10/2012 10:38:09

pljavabruno
Membre

Re : différence concrète entre une extension et un langage

Merci,
j'ai ajouté

;H:\Program Files\Java\jre\lib\i386;H:\Program Files\Java\jre\lib\i386\client

a ceci
path=
H:\Program Files\Java\jdk1.7.0\bin;
H:\Program Files\Java\jre7\bin;
H:\Program Files\Java\jre7\bin\client;
H:\Program Files\Java\jdk1.7.0\lib;
H:\Program Files\PostgreSQL\9.1\share\pljava


Mais l'érreur persiste

ATTENTION:  java.lang.NoClassDefFoundError: org/postgresql/pljava/internal/Backend


ERREUR:  Unable to load class org/postgresql/pljava/internal/Backend using CLASSPATH 'null'

********** Erreur **********

ERREUR: Unable to load class org/postgresql/pljava/internal/Backend using CLASSPATH 'null'
État SQL :XX000



quand j’exécute de nouveau l'érreur passe à




ERREUR:  Failed to create Java VM

********** Erreur **********

ERREUR: Failed to create Java VM
État SQL :XX000

je ne comprends plus rien

Dernière modification par pljavabruno (18/10/2012 10:38:45)

Hors ligne

#8 18/10/2012 11:46:40

rjuju
Administrateur

Re : différence concrète entre une extension et un langage

Avez-vous bien ajouté le fichier pljava.jar ?

Hors ligne

#9 18/10/2012 11:51:48

pljavabruno
Membre

Re : différence concrète entre une extension et un langage

oui ! je l'ai fais  avec cette ligne de code   dans le fichier postgresql.con.f

pljava.classpath = 'H:\\Program Files\\PostgreSQL\\8.4\\share\\pljava\\pljava.jar'

je doute aussi sur la version du jdk 1.7   que j'utilise actuellement, je compte aussi le mettre à jour   pour voir le comportement

Merci  pour votre disponibilité

Dernière modification par pljavabruno (18/10/2012 11:54:21)

Hors ligne

#10 18/10/2012 13:47:45

rjuju
Administrateur

Re : différence concrète entre une extension et un langage

Le premier message (java.lang.NoClassDefFoundError: org/postgresql/pljava/internal/Backend) fait plutôt penser que postgres ne trouve pas ce fichier jar. Vous pouvez essayer de le copier dans le sous répertoire lib plutôt que share, ce qui doit être son emplacement normal je pense.

Hors ligne

#11 18/10/2012 14:09:52

pljavabruno
Membre

Re : différence concrète entre une extension et un langage

Merci,
je l'ai fais  mais aucun changement au niveau de l'érreur,
le probleme c'est que:

quand je crée une fonction pljava, tout passe bien, mais quand je fait l'appel d'une des fonction ( SELECT sqlj.java_call_handler(); ou  SELECT sqlj.install_jar('H:/Program Files/PostgreSQL/8.3/share/pljava/examples.jar', 'samples',  true);
par exemple), c'est là ou j'ai cette érreur
ATTENTION:  java.lang.NoClassDefFoundError: org/postgresql/pljava/internal/Backend

est ce qu'il y a une façon de modier le CLASSPATH  avec les fonction  get_classparh()   et  set_classpath()  fournie avec le shéma sqlj  ?

Dernière modification par pljavabruno (18/10/2012 14:13:39)

Hors ligne

#12 18/10/2012 16:17:38

pljavabruno
Membre

Re : différence concrète entre une extension et un langage

un très grand merci  rjuju,

il  me fallait tout juste redémarrer la machine completement,  mais actuellement  un dernier problème:

quand j'éssaie d'installer un jar dans postgresql, j'ai cette érreur:

ERREUR:  java.sql.SQLException: I/O exception reading jar file: unknown protocol: h

********** Erreur **********

ERREUR: java.sql.SQLException: I/O exception reading jar file: unknown protocol: h
État SQL :XX000

Je ne sais de quel protocol est qu'il s'agit !

Merci pour  de votre aide

Hors ligne

Pied de page des forums