Development #38579
Mapping de workflow en mode postgresql
0%
Description
Quand il y a correspondance à faire entre des statuts, en postgresql, on devrait passer par quelques requêtes UPDATE plutôt que charger tous les formdata/evolution.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 4 ans
- Lié à Bug #22355: le remapping des statuts sur changement d'un workflow est parfois trop long ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-misc-remap-statuses-in-a-transaction-38579.patch 0001-misc-remap-statuses-in-a-transaction-38579.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
J'ai ajouté un cas qui n'était pas géré : si un statut déjà inconnu est présent (comment mystère, mais ça arrive visiblement, voir ticket CD06 lié) il est remappé sur old-<workflow.id>-{status}
, au moins on en garde une trace plutôt que de le mettre à null comme avant.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-misc-remap-statuses-in-a-transaction-38579.patch 0001-misc-remap-statuses-in-a-transaction-38579.patch ajouté
Couverture augmentée.
Mis à jour par Frédéric Péters il y a plus de 3 ans
Il y a moyen de réécrire l'SQL pour passer les identifiants de statut en paramètres à cur.execute(statement, parameters), plutôt que dans le statement ?
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-misc-remap-statuses-in-a-transaction-38579.patch 0001-misc-remap-statuses-in-a-transaction-38579.patch ajouté
Les deux remarques sont intégrées.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Statut changé de Solution proposée à En cours
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Statut changé de En cours à Solution proposée
Échec intermittent du build.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-admin-do-not-consider-drafts-on-remapping-status-492.patch 0001-admin-do-not-consider-drafts-on-remapping-status-492.patch ajouté
- Fichier 0002-misc-remap-statuses-in-a-transaction-38579.patch 0002-misc-remap-statuses-in-a-transaction-38579.patch ajouté
Rebasé sur #49259.
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- Fichier 0001-misc-remap-statuses-in-a-transaction-38579.patch 0001-misc-remap-statuses-in-a-transaction-38579.patch ajouté
rebasé.
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- Fichier 0001-misc-remap-statuses-in-a-transaction-38579.patch 0001-misc-remap-statuses-in-a-transaction-38579.patch ajouté
rebasé.
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- Fichier 0001-misc-remap-statuses-in-a-transaction-38579.patch 0001-misc-remap-statuses-in-a-transaction-38579.patch ajouté
rebasé.
Mis à jour par Frédéric Péters il y a plus de 2 ans
(rebasé à nouveau, sans avoir regardé le précédent build jenkins qui était en erreur).
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0003-to-fixup-use-a-generator-to-silence-pylint.patch 0003-to-fixup-use-a-generator-to-silence-pylint.patch ajouté
- Fichier 0001-misc-remap-statuses-in-a-transaction-38579.patch 0001-misc-remap-statuses-in-a-transaction-38579.patch ajouté
- Fichier 0002-to-fixup-silence-pylint-by-using-conn-to-commit.patch 0002-to-fixup-silence-pylint-by-using-conn-to-commit.patch ajouté
Erreurs pylint corrigées.
Mis à jour par Frédéric Péters il y a plus de 2 ans
Après le rebase il y a un nouveau commit je ne sais pas s'il est proposé à la relecture il introduit des import jamais vu de psycopg2 qui vont demander du temps supplémentaire à la relecture, temps qu'on n'a pas nécessairement.
Cela pour dire : si c'est proposé : le proposer, avec une explication de cette partie, pour gagner du temps, sinon, le dire aussi, sortir ce commit dans une autre branche, qu'on soit clair sur ce qui est proposé ici.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-misc-remap-statuses-in-a-transaction-38579.patch 0001-misc-remap-statuses-in-a-transaction-38579.patch ajouté
Ok, rebasé en un seul commit.
J'introduis l'utilisation de psycopg2.sql qui a lui même été introduit dans psycopg2 2.7, ça correspond à la version de psycopg2 à l'époque de stretch (oldoldstable), je pense que ça ne devrait pas poser de problème au niveau des versions.
L'expression étant un peu compliquée je trouve ça plus lisible en utilisant ce module, qu'en passant une liste de valeurs à interpoller à execute()
qui est la méthode classique dans le reste du module et dans la version précédente de ce patch, je pense que ça simplifie la relectue. SQL est une chaîne (donc on a la méthode .format() classique) mais qui spécialise l'interpolation pour les différentes classes SQL (pour du code SQL "raw"), Literal (pour les valeurs) et Identifier (pour les références à des objets SQL, tables, colonnes, etc...). Ça remplace l'utilisation de mogrify() aussi (il y en a une occurence dans w.c.s.).
Mis à jour par Frédéric Péters il y a plus de 2 ans
unmmaped_status_suffix = '-invalid-%s' % str(self.workflow_id or 'default')
unmaped.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-misc-remap-statuses-in-a-transaction-38579.patch 0001-misc-remap-statuses-in-a-transaction-38579.patch ajouté
Ok.
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Solution proposée à Résolu (à déployer)
Et là me disant que je n'avais pas le temps de tester correctement mais qu'il ne fallait pas rater ce cycle, j'ai poussé,
commit dfbe3123efb1c9f75a87b6ffdb446aad4ae484a4 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Thu Nov 26 15:35:19 2020 +0100 misc: remap statuses in a transaction (#38579)
et puis j'ai vu jenkins rouge. Misère.
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: remap statuses in a transaction (#38579)