-
Notifications
You must be signed in to change notification settings - Fork 33
Description
Lors de la migration de TaxRef v17, nous obtenons 48 lignes avec pour valeur dans le champ action Conflicts with attributes : ...
. Or, pour 30 d'entres elles, les conflits en question n'en sont pas mais correspondent plutôt au cas 4 "split and merge" bien que le script détecte ces lignes en tant que cas n°3 "merge".
La différence par rapport au schéma c'est que le cd_ref2 continue d'exister dans la nouvelle version de TaxRef, il ne disparaît pas. C'est seulement un cd_nom (ex. cd_nom4) correspondant à un synonyme du nom retenu (cd_ref2) qui est transféré vers un cd_ref déjà existant (cd_ref1).
Schéma représentant le cas en question
Dans ce schéma, il faut considérer que "cd_nom1 = cd_ref1" et que "cd_nom5 = cd_ref5".
Dans tous les cas en question, nous avons des attributs associés aux cd_ref1 et au cd_ref5.
Dans ce cas là, il ne devrait pas y avoir de conflits liés aux attributs et/ou médias et le cd_nom4 devrait simplement changer de cd_ref.
Exemple concret
Et une image contenant les lignes de la table tmp_taxref_changes.comp_grap
correspondant à un exemple du problème:
Dans cet exemple, nous avons 2 cd_ref 80988
(Ajuga pyramidalis) et 80990
(Ajuga reptans) qui sont tous les deux existants dans TaxRef v16 et v17 (pas de changement de cd_ref entre les deux versions). Le cd_ref 80990
a seulement un cd_nom (80985
) qui est transféré dans la grappe du cd_ref 80988
.
Le problème c'est que la colonne "action" contient des "Conflicts with attributes :
" qui ne devraient pas exister puisque les cd_ref ne changent pas.
Proposition de solution
Il faudrait juste avant la détection des "Conlicts with attributes : ..." repérer les cas en question est définir l'action à Do not change attributes and media
.
Il me semble également qu'il faudrait ignorer les cas ou i_cd_ref = f_cd_ref lors de la détection des conflits en ajoutant une clause i_cd_ref != f_cd_ref
au WHERE
.
Enfin, bien que les modifications ci-dessus semblent suffire, il faudrait peut être également ajouter une clause AND action IS NULL
dans le WHERE de la requête détection les conflits.