IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Causes de l'erreur 5438


Sujet :

PostgreSQL

  1. #1
    Futur Membre du Club
    Femme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Juillet 2024
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur COBOL

    Informations forums :
    Inscription : Juillet 2024
    Messages : 3
    Par d�faut Causes de l'erreur 5438
    Bonjour,

    Pour les besoins d'un projet COBOL/Postgres, j'ai cr�� un curseur qui me renvoie 6 lignes de 2 champs.
    Lorsque je descend ce curseur par une boucle , l'application me renvoie le message d'erreur suivant et se ferme: double free or corruption (out)

    [1] 5438 IOT instruction (core dumped) ./runstat
    La requ�te du curseur fonctionne lorsque je l'ex�cute directement dans la base, je ne comprend pas pourquoi j'ai ce message, sachant qu'une partie des donn�es est bien r�cup�r�e (j'ai d�structur� la boucle pour ex�cuter le fetch ligne par ligne, il s'arr�te � mi chemin (3 lignes lues pour 6 lignes � lire)).
    Voici la requ�te:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT r.REGION_NUM, 
                              COUNT(c.UUID_CUSTOMER) AS NB_CUSTOMER
                     FROM BOBO_REGION r JOIN CUSTOMER c
                     ON SUBSTRING(c.CUSTOMER_ZIPCODE FROM 1 FOR 2) 
                           = r.REGION_CODEDEP
                     WHERE c.CUSTOMER_ACTIVE IN ('1','0')       
                     GROUP BY r.REGION_NUM
                     ORDER BY r.REGION_NUM;
    Et le r�sultat depuis la base:
    region_num	nb_customer
    1	1
    7	1
    8	1
    10	1
    11	1
    13	1
    Rien de bien m�chant...
    Auriez vous des pistes pour expliquer et corriger ce qui doit l'�tre pour aller jusqu'au bout de ma boucle sur le fetch?

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de base de donn�es
    Inscrit en
    Septembre 2016
    Messages
    963
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 58
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Architecte de base de donn�es
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 963
    Par d�faut
    Bonjour,

    Visiblement le probl�me vient plut�t du curseur.
    En quel langage est-il programm� ? pl-sql ?

    Ce que je suspecte : lire une ligne inexistante.
    Dans ce cas c'est la condition de sortie qui serait en cause.

    Sinon, faire une table temporaire du r�sultat (stabilisation du r�sultat) et faire une requ�te sur cette table en jouant avec LIMIT
    https://www.postgresql.org/docs/curr...ies-limit.html

  3. #3
    Futur Membre du Club
    Femme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Juillet 2024
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur COBOL

    Informations forums :
    Inscription : Juillet 2024
    Messages : 3
    Par d�faut
    Bonjour.

    Merci pour votre r�ponse.
    Cependant, j'ai du mal � la comprendre; comment un curseur peut il ramener une ligne inexistante?
    Cela se passe au milieu de la lecture des r�sultats, ce n'est donc pas la fin de curseur qui serait mal g�r�e.

    Merci pour l'astuce LIMIT pour �viter de d�structurer ma boucle FETCH. Je n'y avais pas pens�.

    Sinon, oui, je travaille en pl-sql.

  4. #4
    R�dacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de donn�es / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Expert bases de donn�es / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par d�faut
    Si votre curseur est "live" et que vous n'avez pas mis de ORDER BY, les lignes peuvent se d�placer au gr� des UPDATEs concurrent et ce type d'erreur peut apparaitre si le syst�me croyait trouver une ligne qui s'est finalement d�plac�e...

    A +
    Fr�d�ric Brouard - SQLpro - ARCHITECTE DE DONN�ES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : mod�lisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Mod�rateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 624
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activit� : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 624
    Billets dans le blog
    10
    Par d�faut
    bonjour,

    Autre solution, utiliser une isolation "RR" pour que les lectures soient "r�p�tables", mais bien s�r, c'est au d�triment des threads concurrents.
    Voir ICI


    � ce propos :

    Citation Envoy� par IsaM59 Voir le message
    Pour les besoins d'un projet COBOL/Postgres, j'ai cr�� un curseur qui me renvoie 6 lignes de 2 champs.
    Il s'agit de 6 lignes de deux colonnes, les champs n'ont rien � voir avec la BDD : ce sont les zones d'un formulaire de saisie ou d'un �tat.


    Enfin, la fonction substring sur le pr�dicat de jointure rend celui-ci non sargable : aucun index n'est �ligible, les performances peuvent s'en ressentir.
    Ce besoin est probablement symptomatique d'une erreur de mod�lisation.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Juillet 2024
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur COBOL

    Informations forums :
    Inscription : Juillet 2024
    Messages : 3
    Par d�faut
    Merci pour vos retours.
    D'abord il y a un order by dans la requ�te du curseur.
    Ensuite, je suis la seule � utiliser la base lorsque je lis les donn�es renvoy�es par le curseur. Il n'y a donc pas de concurrence avec une autre action sur la table, pas de mise � jour ni de lecture.
    Enfin, le substring est l� pour isoler le code d�partement du code postal des clients.

  7. #7
    Mod�rateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 624
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activit� : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 624
    Billets dans le blog
    10
    Par d�faut
    Citation Envoy� par IsaM59 Voir le message
    Enfin, le substring est l� pour isoler le code d�partement du code postal des clients.
    Ce qui est une mauvaise id�e : les deux premiers caract�res du code postal correspondent souvent au d�partement, mais pas toujours, il y a de nombreuses exceptions !

    Voyez ICI


    �a confirme l'erreur de mod�lisation.

Discussions similaires

  1. [MySQL] Cherche cause de l'erreur 'Aucune base n'a �t� s�lectionn�e'
    Par CinePhil dans le forum PHP & Base de donn�es
    R�ponses: 2
    Dernier message: 13/08/2008, 14h12
  2. [MySQL] est ce que l'emplacement de la requete est la cause de l'erreur
    Par info_sara dans le forum PHP & Base de donn�es
    R�ponses: 5
    Dernier message: 13/06/2008, 13h41
  3. [7.4.3] pg_restore annul� � cause de l'erreur
    Par D�b�a dans le forum PostgreSQL
    R�ponses: 0
    Dernier message: 03/04/2008, 16h52
  4. Avertissement � cause d'une erreur dans l'URL
    Par ranell dans le forum Langage
    R�ponses: 3
    Dernier message: 03/03/2008, 17h44
  5. Cause de l'erreur ?
    Par uranium-design dans le forum Visual C++
    R�ponses: 11
    Dernier message: 28/10/2006, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo