[ 
https://issues.apache.org/jira/browse/SOLR-4297?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13589934#comment-13589934
 ] 

Rob commented on SOLR-4297:
---------------------------

Based on its behavior it seems like having set=null results in the server 
flagging all subsequent elements from that update to be removed. (Hence the 
error message above noting that the mandatory Id is missing.

As a further example:

If I have the null=true cat field at the end of the 
doc{code:xml}<add><doc><field name="id">Item1</field><field name="manu" 
update="set">Hello</field><field name="cat" update="set" null="true" /></doc>
{code}
The resulting indexed document looks something like {code:xml}<doc><str 
name="id">GB18030TEST</str><str name="manu">Hello</str></doc>{code}

however if we place the null=true element before the manu element like 
thus{code:xml}<add><doc><field name="id">Item1</field><field name="cat" 
update="set" null="true" /><field name="manu" 
update="set">World</field></doc>{code}

then manu item is also cleared although all other other fields not provided in 
the update do hang around.
The work around at the moment as noted is to ensure that all null=true fields 
are placed at the end of the doc.
                
> Atomic update including set null=true throws uniqueKey error depending on 
> order
> -------------------------------------------------------------------------------
>
>                 Key: SOLR-4297
>                 URL: https://issues.apache.org/jira/browse/SOLR-4297
>             Project: Solr
>          Issue Type: Bug
>          Components: clients - java, update
>    Affects Versions: 4.0, 4.1
>            Reporter: Ben Pennell
>            Assignee: Shalin Shekhar Mangar
>
> There seems to be a field order issue going on when setting a field to null 
> with a partial update.  I am running the nightly Solr 
> 4.1.0.2013.01.11.08.23.02 build.  Ran into this issue using the nightly build 
> version of Solrj, including the null field fix from Solr-4133.
> Null first, unique field second (this is what is being generated by Solrj)
> {code}
> curl 'http://localhost/solr/update?commit=true' -H 'Content-type:text/xml' -d 
> '<add><doc boost="1.0">
> <field name="timestamp" update="set" null="true"/><field 
> name="id">test</field>
> </doc></add>'
> {code}
> {code}
> <?xml version="1.0" encoding="UTF-8"?>
> <response>
> <lst name="responseHeader"><int name="status">400</int><int 
> name="QTime">0</int></lst><lst name="error"><str name="msg">Document is 
> missing mandatory uniqueKey field: id</str><int name="code">400</int></lst>
> </response>
> {code}
> id first, then null field
> {code}
> curl 'http://localhost/solr/update?commit=true' -H 'Content-type:text/xml' -d 
> '<add><doc boost="1.0">
> <field name="id">test</field>
> <field name="timestamp" update="set" null="true"/>
> </doc></add>'
> {code}
> {code}
> <response>
> <lst name="responseHeader"><int name="status">0</int><int 
> name="QTime">30</int></lst>
> </response>
> {code}
> Real value first, then id
> {code}
> curl 'http://localhost/solr/update?commit=true' -H 'Content-type:text/xml' -d 
> '<add><doc boost="1.0">
> <field name="timestamp" update="set">1970-01-01T00:00:00Z</field>
> <field name="id">test</field>
> </doc></add>'
> {code}
> {code}
> <?xml version="1.0" encoding="UTF-8"?>
> <response>
> <lst name="responseHeader"><int name="status">0</int><int 
> name="QTime">28</int></lst>
> </response>
> {code}
> Unfortunately it is doing this field ordering every atomic update request via 
> Solrj I do now.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to