[ https://issues.apache.org/jira/browse/SOLR-6307?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14143130#comment-14143130 ]
Anurag Sharma edited comment on SOLR-6307 at 9/22/14 11:55 AM: --------------------------------------------------------------- Here is the code snippet of remove function. fieldValue is an Object containing items to be removed. {quote} final Collection<Object> original = existingField.getValues(); if (fieldVal instanceof Collection) { original.removeAll((Collection) fieldVal); } else { original.remove(fieldVal); } {quote} The type of fieldVal is parsed by org.noggit.JSONParser. To describe more on #3, "original.removeAll((Collection) fieldVal);" is only successful when collection items of original and fieldVal are of the same type. So before making above call another collection can be be build at runtime containing same item type as the item types of original by typecasting the value(s) from fieldVal and pass them like: original.removeAll(typeCastedCollectionOfInputItems); This approach has minimal code change and will impact only doRemove() function in DistributedUpdateProcessor class. was (Author: anuragsharma): Here is the code snippet of remove function. fieldValue is an Object containing items to be removed. final Collection<Object> original = existingField.getValues(); if (fieldVal instanceof Collection) { original.removeAll((Collection) fieldVal); } else { original.remove(fieldVal); } The type of fieldVal is parsed by org.noggit.JSONParser. To describe more on #3, "original.removeAll((Collection) fieldVal);" is only successful when collection items of original and fieldVal are of the same type. So before making above call another collection can be be build at runtime containing same item type as the item types of original by typecasting the value(s) from fieldVal and pass them like: original.removeAll(typeCastedCollectionOfInputItems); This approach has minimal code change and will impact only doRemove() function in DistributedUpdateProcessor class. > Atomic update remove does not work for int array or date array > -------------------------------------------------------------- > > Key: SOLR-6307 > URL: https://issues.apache.org/jira/browse/SOLR-6307 > Project: Solr > Issue Type: Bug > Components: update > Affects Versions: 4.9 > Reporter: Kun Xi > Labels: atomic, difficulty-medium, impact-medium > > Try to remove an element in the string array with curl: > {code} > curl http://localhost:8080/update\?commit\=true -H > 'Content-type:application/json' -d '[{ "attr_birth_year_is": { "remove": > [1960]}, "id": 1098}]' > curl http://localhost:8080/update\?commit\=true -H > 'Content-type:application/json' -d '[{"reserved_on_dates_dts": {"remove": > ["2014-02-12T12:00:00Z", "2014-07-16T12:00:00Z", "2014-02-15T12:00:00Z", > "2014-02-21T12:00:00Z"]}, "id": 1098}]' > {code} > Neither of them works. > The set and add operation for int array works. > The set, remove, and add operation for string array works -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org