Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

copy_field of array/repeated field into newly created array of objects/repeated object with $first/$last creates wrong multiple output #602

Open
TobiasNx opened this issue Feb 4, 2022 · 4 comments

Comments

@TobiasNx
Copy link
Contributor

TobiasNx commented Feb 4, 2022

Spotted while testing metafacture/metafacture-fix#106: https://github.com/TobiasNx/fix-FunctionalReview-Testing/blob/dfcf4fac13e4deab0606a9131ea846175170cfbc/data/testing/repeatedFieldsArrayToXML

Perhaps this is also a problem for add_field and move_field.
Should be dealt with after: metafacture/metafacture-fix#102

copy_field("animal_string_Array[]", "animals_repeated_SimpleField")
copy_field("animal_object_Array[]", "animals_repeated_ObjectField")
copy_field("animal_object_Array[]", "test_animals_repeated_ObjectField")
copy_field("animal_object_Array[]", "test_animal_object_Array[]")

#This creates trouble - writes into every first object in array
copy_field("animal_string_Array[]", "test_animals_repeated_ObjectField.$first.animalsString_1")
#This creates trouble - writes into every last object in array
copy_field("animal_string_Array[]", "test_animals_repeated_ObjectField.$last.animalsObject_1[]")

#This creates trouble - writes into every first object in array
copy_field("animal_string_Array[]", "test_animal_object_Array[].$first.animalsString_2")
#This creates trouble - writes into every last object in array
copy_field("animal_string_Array[]", "test_animal_object_Array[].$last.animalsObject_2[]")

expected:

{
  "animal_string_Array" : [ "dog", "elefant" ],
  "animal_object_Array" : [ {
    "name" : "dog"
  }, {
    "name" : "elefant"
  } ],
  "animals_repeated_SimpleField" : "dog",
  "animals_repeated_SimpleField" : "elefant",
  "animals_repeated_ObjectField" : {
    "name" : "dog"
  },
  "animals_repeated_ObjectField" : {
    "name" : "elefant"
  },
  "test_animals_repeated_ObjectField" : {
    "name" : "dog",
    "animalsString_1" : "dog",
    "animalsString_1" : "elefant"
  },
  "test_animals_repeated_ObjectField" : {
    "name" : "elefant",
    "animalsObject_1" : [ "dog", "elefant" ]
  },
  "test_animal_object_Array" : [ {
    "name" : "dog",
    "animalsString_2" : "dog",
    "animalsString_2" : "elefant"
  }, {
    "name" : "elefant",
    "animalsObject_2" : [ "dog", "elefant" ]
  } ]
}
{
  "animal_string_Array" : [ "dog", "elefant" ],
  "animal_object_Array" : [ {
    "name" : "dog",
    "animalsString_1" : "dog",
    "animalsString_1" : "elefant",
    "animalsString_2" : "dog",
    "animalsString_2" : "elefant"
  }, {
    "name" : "elefant",
    "animalsObject_1" : [ "dog", "elefant" ],
    "animalsObject_2" : [ "dog", "elefant" ]
  } ],
  "animals_repeated_SimpleField" : "dog",
  "animals_repeated_SimpleField" : "elefant",
  "animals_repeated_ObjectField" : {
    "name" : "dog",
    "animalsString_1" : "dog",
    "animalsString_1" : "elefant",
    "animalsString_2" : "dog",
    "animalsString_2" : "elefant"
  },
  "animals_repeated_ObjectField" : {
    "name" : "elefant",
    "animalsObject_1" : [ "dog", "elefant" ],
    "animalsObject_2" : [ "dog", "elefant" ]
  },
  "test_animals_repeated_ObjectField" : {
    "name" : "dog",
    "animalsString_1" : "dog",
    "animalsString_1" : "elefant",
    "animalsString_2" : "dog",
    "animalsString_2" : "elefant"
  },
  "test_animals_repeated_ObjectField" : {
    "name" : "elefant",
    "animalsObject_1" : [ "dog", "elefant" ],
    "animalsObject_2" : [ "dog", "elefant" ]
  },
  "test_animal_object_Array" : [ {
    "name" : "dog",
    "animalsString_1" : "dog",
    "animalsString_1" : "elefant",
    "animalsString_2" : "dog",
    "animalsString_2" : "elefant"
  }, {
    "name" : "elefant",
    "animalsObject_1" : [ "dog", "elefant" ],
    "animalsObject_2" : [ "dog", "elefant" ]
  } ]
}
@TobiasNx
Copy link
Contributor Author

TobiasNx commented Feb 4, 2022

I tested it with and without the underscore in the name, this seems not to be the problem.

@TobiasNx TobiasNx changed the title copy_field of array/repeated field into array with $first/$last creates worng output copy_field of array/repeated field into array with $first/$last creates wrong multiple output Feb 4, 2022
@fsteeg
Copy link
Member

fsteeg commented Feb 21, 2022

TobiasNx referenced this issue in metafacture/metafacture-fix Mar 1, 2022
@TobiasNx
Copy link
Contributor Author

TobiasNx commented Mar 1, 2022

The problem seems to result from the created array not the input arrays.

@TobiasNx TobiasNx changed the title copy_field of array/repeated field into array with $first/$last creates wrong multiple output copy_field of array/repeated field into newly created array of objects/repeated object with $first/$last creates wrong multiple output Mar 1, 2022
TobiasNx referenced this issue in metafacture/metafacture-fix Mar 1, 2022
@blackwinter
Copy link
Member

@TobiasNx TobiasNx changed the title copy_field of array/repeated field into newly created array of objects/repeated object with $first/$last creates wrong multiple output copy_field of array/repeated field into newly created array of objects/repeated object with $first/$last creates wrong multiple output Jan 8, 2025
@blackwinter blackwinter transferred this issue from metafacture/metafacture-fix Jan 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Backlog
Development

No branches or pull requests

3 participants