couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Joseph Davis (Commented) (JIRA)" <>
Subject [jira] [Commented] (COUCHDB-1407) JSON encoding of number changes
Date Mon, 13 Feb 2012 18:07:00 GMT


Paul Joseph Davis commented on COUCHDB-1407:

As mentioned on the dev@ thread, I'm pretty dead set against this approach. While there seems
to be some sort of general consensus that storing numbers as uninterpreted bytes and repeating
them back is the way to go it really misses the entirety of the issue.

First, CouchDB has never claimed to pass numbers around while keeping byte identical representations.
This patch attempts to change that drastically with a very large number of consequences that
we haven't begun to investigate.

Secondly, if we were to actually consider going this route then we'd also be obliged to start
looking at every other place where we change representations internally as well.

Thirdly, if we were to do that then we'd also have to get into all of the cases where we're
stricter than JSON specifically allows and then try and address all of those issues as well.

Basically, how about we just fix the encoder to spit out a decimal point and an appropriate
amount of precision and then start documenting our round tripping limitations.
> JSON encoding of number changes
> -------------------------------
>                 Key: COUCHDB-1407
>                 URL:
>             Project: CouchDB
>          Issue Type: Bug
>          Components: HTTP Interface
>    Affects Versions: 1.2
>         Environment: Ubuntu 12.04 (alpha)
>            Reporter: Adam Lofts
>         Attachments: 0001-Only-validate-numbers-on-JSON-decoding.patch
> JSON encoding of Number has changed from 1.0.2 to 1.2. JSON only defines Number but this
change causes issues in my app because python decodes the number as an int in 1.2.
> Test case:
> PORT=5985
> curl -X DELETE http://localhost:$PORT/test-floats/
> curl -X PUT http://localhost:$PORT/test-floats/
> curl -X PUT http://localhost:$PORT/test-floats/doc1 -H "Content-Type: application/json"
-d "{ \"a\": 1.0 }"
> curl http://localhost:$PORT/test-floats/doc1
> Run against 1.0.2:
> {"ok":true}
> {"ok":true}
> {"ok":true,"id":"doc1","rev":"1-78e61304147429d3d500aee7806fd26d"}
> {"_id":"doc1","_rev":"1-78e61304147429d3d500aee7806fd26d","a":1.0}
> Run against 1.2:
> {"ok":true}
> {"ok":true}
> {"ok":true,"id":"doc1","rev":"1-78e61304147429d3d500aee7806fd26d"}
> {"_id":"doc1","_rev":"1-78e61304147429d3d500aee7806fd26d","a":1}

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message