Anomalie #16856
fermé[Statistiques] Erreur SQL
Description
A l'arrivée sur la page des statistiques, le spinner reste actif et rien ne s'affiche.
Dans les en-têtes renvoyées par le serveur, on trouve l'erreur suivante:
X-Laabs-Exception
PDOException; SQLSTATE[22P02]: Invalid text representation: 7 ERREUR: syntaxe en entrée invalide pour l'entier : « » in /var/www/maarchRM2.7.2/src/bundle/Statistics/Controller/Statistics.php:853
Mis à jour par Cyril VAZQUEZ il y a plus de 3 ans
il y a un événement de dépôt dont la colonne 8 des données complémentaires, censée contenir la taille de l'objet et pouvoir être castée en INT, est en fait un texte
C'est une valeur vide parce que le c'est un dépôt d'archive dossier (sans pièce)
Evénement de dépôt avec une resource:
[
"maarchRM_5o29z5c7f-0000-1y1v2i",
"SHA256",
"1903047eb078ed77ffa4542f705910e544545a70428fb2c90d0ed0cb43c46f1e",
"\\\\\\\\maarchRM\\ACME\\DIP\\DOSIP\\2020\\09\\03\\maarchRM_5o29mswmf-0000-qhozdw\\maarchRM_5o29z0uof-0000-jgdbso\\maarchRM_5o29z5bss-0000-k5sbcv\\maarchRM_5o29z5c7f-0000-1y1v2i",
"DIP",
"",
"GIC",
"",
263045
]
Evénement dépôt sans ressource :
[
"",
"",
"",
"\\\\maarchRM\\ACME\\DIP\\DOSIP\\2020\\09\\03\\maarchRM_5o29mswmf-0000-qhozdw\\maarchRM_5o29z0uof-0000-jgdbso",
"DIP",
"",
"GIC",
"",
""
]
Il faut donc ajouter une clause dans le SQL pour ne prendre en compte que les valeurs numériques à chaque fois qu'on fait la somme de la taille:
Modification du contrôleur Statistics dans fonction 'getSizeForDirectEvent'
Requête qui plantait :
SELECT SUM(CAST("event"."eventInfo"::json->>8 AS INTEGER))
FROM "lifeCycle"."event" "event"
WHERE "event"."eventType" IN ('recordsManagement/deposit')
Requête corrigée:
SELECT SUM(CAST(COALESCE(NULLIF("event"."eventInfo"::json->>8, ''), '0') AS INTEGER))
FROM "lifeCycle"."event" "event"
WHERE "event"."eventType" IN ('recordsManagement/deposit')
Mis à jour par Cyril VAZQUEZ il y a plus de 3 ans
- Statut changé de En cours à R&D - En test
il y a un événement de dépôt dont la colonne 8 des données complémentaires, censée contenir la taille de l'objet et pouvoir être castée en INT, est en fait un texte
C'est une valeur vide parce que le c'est un dépôt d'archive dossier (sans pièce)
Evénement de dépôt avec une resource:
[
"maarchRM_5o29z5c7f-0000-1y1v2i",
"SHA256",
"1903047eb078ed77ffa4542f705910e544545a70428fb2c90d0ed0cb43c46f1e",
"\\\\\\\\maarchRM\\ACME\\DIP\\DOSIP\\2020\\09\\03\\maarchRM_5o29mswmf-0000-qhozdw\\maarchRM_5o29z0uof-0000-jgdbso\\maarchRM_5o29z5bss-0000-k5sbcv\\maarchRM_5o29z5c7f-0000-1y1v2i",
"DIP",
"",
"GIC",
"",
263045
]
Evénement dépôt sans ressource :
[
"",
"",
"",
"\\\\maarchRM\\ACME\\DIP\\DOSIP\\2020\\09\\03\\maarchRM_5o29mswmf-0000-qhozdw\\maarchRM_5o29z0uof-0000-jgdbso",
"DIP",
"",
"GIC",
"",
""
]
Il faut donc ajouter une clause dans le SQL pour ne prendre en compte que les valeurs numériques à chaque fois qu'on fait la somme de la taille:
Modification du contrôleur Statistics dans fonction 'getSizeForDirectEvent'
Requête qui plantait :
~~sql
SELECT SUM(CAST("event"."eventInfo"::json->>8 AS INTEGER))
FROM "lifeCycle"."event" "event"
WHERE "event"."eventType" IN ('recordsManagement/deposit')
Requête corrigée:
~~sql
SELECT SUM(CAST(COALESCE(NULLIF("event"."eventInfo"::json->>8, ''), '0') AS INTEGER))
FROM "lifeCycle"."event" "event"
WHERE "event"."eventType" IN ('recordsManagement/deposit')
Mis à jour par Emmanuel DILLARD il y a plus de 3 ans
- Projet changé de 252 à Backlog RM
- Version cible changé de 2.7.3 à 2.7
- Fonction
Interrogationsupprimé - Tags RM 2.7.3 ajouté
Mis à jour par Emmanuel DILLARD il y a plus de 3 ans
- Statut changé de Livré à R&D - Terminé