[ 
https://issues.apache.org/jira/browse/COUCHDB-642?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12899848#action_12899848
 ] 

Klaus Trainer commented on COUCHDB-642:
---------------------------------------

We need to consider that the ETag in the If-Match header doesn't override the 
_rev field in the body either. In fact, if they are not equal, status code 400 
Bad Request is returned.

I'm certainly not the one who can and wants to decide whether this behaviour 
should better be changed or not.

The only opinion I have about the issue is that things should be consistent. 
That's the actual reason why I wrote the patch: if the rev query parameter 
works with DELETE requests, it should work with PUT requests as well.

In that sense, your argument that the _id field in the document is overridden 
and hence the _rev field should be as well, sounds reasonable. Consequently, 
the ETag should also override the body's _rev field in that case.

I can change the current behaviour, so that the rev query parameter and the 
ETag override the _rev field in the body. However, I won't do anything in that 
direction, as long as I haven't heard any opinion of some core developers.

> Support rev in PUT URL
> ----------------------
>
>                 Key: COUCHDB-642
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-642
>             Project: CouchDB
>          Issue Type: New Feature
>          Components: HTTP Interface
>         Environment: trunk 08 Feb 2010
>            Reporter: Brian Candler
>            Priority: Minor
>         Attachments: 0001-Allow-for-the-current-revision-number-to-be.patch
>
>
> A DELETE request lets you append ?rev=xxxx to the URL. But this doesn't work 
> with a PUT request; you have to put the _rev in the body instead (even though 
> the _id is taken from the URL path)
> $ curl -X PUT -d "{}" 
> http://brianadmin:brianad...@127.0.0.1:5984/briantest/foo
> {"ok":true,"id":"foo","rev":"1-967a00dff5e02add41819138abb3284d"}
> $ curl -X PUT -d "{}" 
> http://brianadmin:brianad...@127.0.0.1:5984/briantest/foo?rev=1-967a00dff5e02add41819138abb3284d
> {"error":"conflict","reason":"Document update conflict."}
> $ curl -X PUT -d '{"_rev":"1-967a00dff5e02add41819138abb3284d"}' 
> http://brianadmin:brianad...@127.0.0.1:5984/briantest/foo
> {"ok":true,"id":"foo","rev":"2-7051cbe5c8faecd085a3fa619e6e6337"}
> Allowing ?rev in the URL would make PUT and DELETE more consistent, and would 
> allow you to replace an existing JSON doc with another one without having to 
> merge the _rev into it first.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to