Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 05/04/2018 17:33:16
- duple
- Membre
Erreur sur pg_trgm
Bonjour,
Nous travaillons sur postgresql 9.4 dans un environnement linux debian. Le problème ne survient que maintenant, en fait des requêtes habituelles tournées sur base sans aucun problème, quand soudainement au début d'après midi aujourd'hui la même requête retourne un message d'erreur avec :
"could not find function "gin_trgm_triconsistent" in file "/usr/lib/postgresql/9.4/lib/pg_trgm.so" Where: SQL statement "UPDATE numenvault.Object_Folder SET name = p_name, description = p_description, properties = p_properties, allowed_child_object_type_ids = p_allowed_child_object_type_ids, last_modified_by = p_user, last_modification_date = v_change_timestamp, change_token = v_change_token WHERE id = p_id_folder" PL/pgSQL function numenvault.update_folder(bigint,numenvault.path_segment,text,hstore,character varying[],character varying,hstore) line 56 at SQL statement".
Auparavant, il n'y avait pas eu cette erreur.
De quoi s'agit il exactement, pouvez vous aider svp ? On a déjà essayé de faire un sudo apt-get install postgresql-contrib-9.4 mais toujours l'erreur. Et même un:
CREATE FUNCTION gin_trgm_triconsistent(internal, int2, text, int4, internal, internal, internal)
RETURNS "char"
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
ALTER OPERATOR FAMILY gin_trgm_ops USING gin ADD
OPERATOR 7 %> (text, text),
FUNCTION 6 (text,text) gin_trgm_triconsistent (internal, int2, text, int4, internal, internal, internal);
n'a pas résolu ce problème.
Please help us !!! Merci d'avance
Hors ligne
#2 05/04/2018 21:47:55
- gleu
- Administrateur
Re : Erreur sur pg_trgm
Il n'existe pas de fonction gin_trgm_triconsistent() dans l'extension pg_trgm de la 9.4. Elle n'apparaît qu'à partir de la version 9.6.
Guillaume.
Hors ligne
#3 06/04/2018 09:43:31
- duple
- Membre
Re : Erreur sur pg_trgm
Quoi ? En êtes vous sur ? Et pourquoi il y avait pas eu cette erreur avant ?
J'ai une autre question, comment fait on pour installer un contrib dans une instance postgresql en particulier ? Disons que j'ai 3 instances de postgresql donc 3 pgdata également, j'aimerai dans celui correspondant à pddata1 installer les contrib postgresql
Hors ligne
#4 06/04/2018 10:01:00
- ruizsebastien
- Membre
Re : Erreur sur pg_trgm
bonjour,
Pour installer des extensions :
https://docs.postgresql.fr/9.6/sql-createextension.html
Cordialement,
Sébastien.
Hors ligne
#5 06/04/2018 10:03:27
- gleu
- Administrateur
Re : Erreur sur pg_trgm
Oui, sûr. Ça fait partie du commit 97f3014647a5bd570032abd2b809d3233003f13f :
commit 97f3014647a5bd570032abd2b809d3233003f13f
Author: Teodor Sigaev <teodor@sigaev.ru>
Date: Mon Jul 20 18:18:48 2015 +0300
This supports the triconsistent function for pg_trgm GIN opclass
to make it faster to implement indexed queries where some keys are
common and some are rare.
Patch by Jeff Janes
Intégré le 20 juillet 2015, donc version 9.6. Et sans surprise, ce commit n'apparaît ni dans la branche 9.4 ni dans la branche 9.5. Difficile de dire pourquoi vous n'aviez pas cette erreur avant, on manque d'informations.
Pour l'installation d'un module contrib, ça ne concerne en rien les répertoires de données. Comment avez-vous installé PostgreSQL ? ces trois répertoires sont sur la même version de PostgreSQL ?
Guillaume.
Hors ligne
#6 06/04/2018 12:03:56
- rjuju
- Administrateur
Re : Erreur sur pg_trgm
Quelle version de pg_trgm est installée sur la base en question en 9.4? (\dx pg_trgm). Si ce n'est pas la version 1.0 ou 1.1, il y a eu une mauvaise manipulation.
La requête suivante ne devrait retourner aucune ligne sur votre base. Si elle renvoie des lignes, cela veut dire que postgres essaiera d'appeler la fonction gin_trgm_triconsistent qui n'existe pas en version 9.4:
SELECT am.amname, opf.opfname, ap.amproc, amop.amopopr::regoperator::text
FROM pg_am am
JOIN pg_opfamily opf ON opf.opfmethod = am.oid
JOIN pg_amproc ap ON ap.amprocfamily = opf.oid
JOIN pg_amop amop ON amop.amopfamily = opf.oid
WHERE am.amname = 'gin'
AND opf.opfname = 'gin_trgm_ops'
AND ap.amprocnum = 6;
Julien.
https://rjuju.github.io/
Hors ligne
#7 06/04/2018 13:39:52
- duple
- Membre
Re : Erreur sur pg_trgm
gleu > une version de pg 9.3 avec son pgdata et ses lib , puis une autre version pg9.4 avec ses lib mais cette fois ci avec 2 pdgata (1 par instance)
rjuju > pg_trgm 1.3 sur la 9.4
Est il possible d'effecteur une autre installation de postgresql mais ciblant le pgdata d'une instance dejà présente ?
Hors ligne
#8 06/04/2018 14:05:29
- ruizsebastien
- Membre
Re : Erreur sur pg_trgm
non ce n'est pas possible. Il faut faire une migration des données (pg_upgrade) ou un export import.
Cordialement,
Sébastien.
Hors ligne
#9 06/04/2018 14:39:21
- rjuju
- Administrateur
Re : Erreur sur pg_trgm
pg_trgm 1.3 sur la 9.4
Votre problème est là. Vous avez installé pg_trgm d'une version 9.6 ou plus sur votre instance 9.4
Julien.
https://rjuju.github.io/
Hors ligne
#10 06/04/2018 14:54:26
- duple
- Membre
Re : Erreur sur pg_trgm
bah la version 1.3 elle marchait bien avant cela pourtant.
Hors ligne
#11 06/04/2018 15:20:50
- rjuju
- Administrateur
Re : Erreur sur pg_trgm
Je suppose que le .so a été écrasé par une mise à jour de votre version 9.4
Julien.
https://rjuju.github.io/
Hors ligne
#12 09/04/2018 17:24:25
- duple
- Membre
Re : Erreur sur pg_trgm
une recompilation de postgres a résolu le problème merci
Hors ligne
Pages : 1