Vous n'êtes pas identifié(e).
Bonjour,
Je fais des tests de migration pg9.1->9.4 (migration debian wheezy->jessie).
J'ai une fonction pour wrapper la fonction perl text::unaccent mais celle-ci fait carrément vautrer le serveur :-((
** Error in `postgres: postgres testperl [local] SELECT': free(): invalid pointer: 0x00007fc100000000 ***
2015-08-21 09:04:58 CEST [13653-77] LOG: processus serveur (PID 13503) a été arrêté par le signal 6 : Aborted
2015-08-21 09:04:58 CEST [13653-78] DÉTAIL: Le processus qui a échoué exécutait : SELECT unaccent('utf-8','_');
2015-08-21 09:04:58 CEST [13653-79] LOG: arrêt des autres processus serveur actifs
2015-08-21 09:04:58 CEST [14091-1] postgres@[local] testperl [inconnu] FATAL: le système de bases de données est en cours de restauration
2015-08-21 09:04:58 CEST [12850-2] ATTENTION: arrêt de la connexion à cause de l'arrêt brutal d'un autre processus serveur
2015-08-21 09:04:58 CEST [12850-3] DÉTAIL: Le postmaster a commandé à ce processus serveur d'annuler la transaction
courante et de quitter car un autre processus serveur a quitté anormalement
et qu'il existe probablement de la mémoire partagée corrompue.
2015-08-21 09:04:58 CEST [12850-4] ASTUCE : Dans un moment, vous devriez être capable de vous reconnecter à la base de
données et de relancer votre commande.
2015-08-21 09:04:58 CEST [13653-80] LOG: tous les processus serveur se sont arrêtés, réinitialisation
2015-08-21 09:04:58 CEST [14092-1] LOG: le système de bases de données a été interrompu ; dernier lancement connu à 2015-08-21 08:56:43 CEST
2015-08-21 09:04:58 CEST [14092-2] LOG: le système de bases de données n'a pas été arrêté proprement ; restauration
automatique en cours
2015-08-21 09:04:58 CEST [14092-3] LOG: la ré-exécution commence à 0/61B0360
2015-08-21 09:04:58 CEST [14092-4] LOG: enregistrement de longueur nulle à 0/61B4F58
2015-08-21 09:04:58 CEST [14092-5] LOG: ré-exécution faite à 0/61B4F28
2015-08-21 09:04:58 CEST [14092-6] LOG: la dernière transaction a eu lieu à 2015-08-21 09:04:39.712487+02 (moment de la journalisation)
2015-08-21 09:04:58 CEST [13653-81] LOG: le système de bases de données est prêt pour accepter les connexions
2015-08-21 09:04:58 CEST [14096-1] LOG: lancement du processus autovacuum
Et en plus, il embarque toute la famille dans le tombeau !
La lib perl fonctionne bien hors postgresql:
$ cat test.perl
use Text::Unaccent;
print unac_string('utf-8','titanic ta mère');
$ perl test.perl
titanic ta mere
Pour reproduire:
create database testperl;
\c testperl
create extension plperlu;
CREATE or replace FUNCTION unaccent(the_charset text, the_string text) RETURNS text AS $_X$
use Text::Unaccent;
return unac_string($_[0],$_[1]);
$_X$
language plperlu;
SELECT unaccent('utf-8','');
unaccent
----------
(1 ligne)
Ca marche avec une chaine vide !
SELECT unaccent('utf-8','_');
la connexion au serveur a été coupée de façon inattendue
Le serveur s'est peut-être arrêté anormalement avant ou durant le
traitement de la requête.
La connexion au serveur a été perdue. Tentative de réinitialisation : Échec.
!>
Même avec un caractère "non utf8", ça plante !
J'ai un autre wrapper pour la fonction perl suivante:
use HTML::Entities;
return decode_entities($_[0]);
et celui ci fonctionne sans problème !
Une idée ?