TaxHub icon indicating copy to clipboard operation
TaxHub copied to clipboard

Migration TaxRef v17 problème conflits

Open jpm-cbna opened this issue 6 months ago • 1 comments

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

unnamed 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: unnamed 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.

jpm-cbna avatar Aug 07 '24 16:08 jpm-cbna