Similar to bug 26781 when moving subfield 0 we move the whole record. The tests from 17510 actually cover this, but I suspect it is still not the desired/expected behavior
Created attachment 112827 [details] [review] Bug 26894: Handle subfield 0 and delete empty fields This patch corrects handling of subfield 0 when copying/moving. Before these patches copying from subfield 0 would copy the entire field. We also correct an error that if moving a single subfield, we can leave behind empty fields with no subfields. They should be deleted. To test: 1 - Define a new MARC Modification template with actions: Delete field 100$0 Add new field 100$0 with value Test Update existing or add new field 100$0 with value TestUpdated Move field 100$0 to 600$0 Copy field 600$0 to 100$0 Copy and replace field 245$0 to 700$0 2 - Define a new record like: LDR 00334nam a22001217a 4500 003 ff 005 20201102111604.0 008 201102b xxu||||| |||| 00| 0 eng d 040 _ _ ‡cvsd 100 1 _ ‡012345‡aKnuth, Donal Ervin‡d1938 245 _ _ ‡012345‡aThe aty of computer programming‡cDonald E. Knuth 650 _ 0 ‡042‡aComputer programming‡9462 3 - Modify this record using the template above 4 - Note that entier 245 is copied to 700, same for 600 field 5 - Apply patch 6 - Now only subfields 0 are copied
Created attachment 114343 [details] [review] Bug 26894: Handle subfield 0 and delete empty fields This patch corrects handling of subfield 0 when copying/moving. Before these patches copying from subfield 0 would copy the entire field. We also correct an error that if moving a single subfield, we can leave behind empty fields with no subfields. They should be deleted. To test: 1 - Define a new MARC Modification template with actions: Delete field 100$0 Add new field 100$0 with value Test Update existing or add new field 100$0 with value TestUpdated Move field 100$0 to 600$0 Copy field 600$0 to 100$0 Copy and replace field 245$0 to 700$0 2 - Define a new record like: LDR 00334nam a22001217a 4500 003 ff 005 20201102111604.0 008 201102b xxu||||| |||| 00| 0 eng d 040 _ _ ‡cvsd 100 1 _ ‡012345‡aKnuth, Donal Ervin‡d1938 245 _ _ ‡012345‡aThe aty of computer programming‡cDonald E. Knuth 650 _ 0 ‡042‡aComputer programming‡9462 3 - Modify this record using the template above 4 - Note that entier 245 is copied to 700, same for 600 field 5 - Apply patch 6 - Now only subfields 0 are copied Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
Tested well. Note that I was running manually misc/background_jobs_worker.pl, that must be restarted after applying patches.
Created attachment 115076 [details] [review] Bug 26894: Handle subfield 0 and delete empty fields This patch corrects handling of subfield 0 when copying/moving. Before these patches copying from subfield 0 would copy the entire field. We also correct an error that if moving a single subfield, we can leave behind empty fields with no subfields. They should be deleted. To test: 1 - Define a new MARC Modification template with actions: Delete field 100$0 Add new field 100$0 with value Test Update existing or add new field 100$0 with value TestUpdated Move field 100$0 to 600$0 Copy field 600$0 to 100$0 Copy and replace field 245$0 to 700$0 2 - Define a new record like: LDR 00334nam a22001217a 4500 003 ff 005 20201102111604.0 008 201102b xxu||||| |||| 00| 0 eng d 040 _ _ ‡cvsd 100 1 _ ‡012345‡aKnuth, Donal Ervin‡d1938 245 _ _ ‡012345‡aThe aty of computer programming‡cDonald E. Knuth 650 _ 0 ‡042‡aComputer programming‡9462 3 - Modify this record using the template above 4 - Note that entier 245 is copied to 700, same for 600 field 5 - Apply patch 6 - Now only subfields 0 are copied Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Good catch, Passing QA
Pushed to master for 21.05, thanks to everybody involved!
Pushed to 20.11.x for 20.11.02
Pushed to 20.05.x for 20.05.08
Missing dependencies for 19.11.x, it shouldn't be affected, no backport.