TaxHub
TaxHub copied to clipboard
Migration TaxRef v17 problème conflits
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.