couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adam Kocoloski (JIRA)" <>
Subject [jira] Commented: (COUCHDB-796) Bignum support
Date Sat, 12 Jun 2010 22:28:13 GMT


Adam Kocoloski commented on COUCHDB-796:

>From dev@

On Jun 12, 2010, at 3:33 PM, Jason Smith wrote:

> I hate to sidetrack conversation but I am unclear which Couch component has a bug.

No problem, it's good that people understand this.  There are two bugs.  Bug #1 is that roundtrip
encoding/decoding of big numbers in the Erlang VM is not supported:

1> Original = <<"[12345678911234567892123456789312345678941234567895]">>.
2> RoundTrip = couch_util:json_encode(couch_util:json_decode(Original)).
3> io:format("~s~n", [RoundTrip]).

Anything larger than a 32 bit integer is cast to a float.  This is trivial to fix, and in
fact the behavior is a regression since 0.10.x, when we were running a forked mochijson2.

Bug #2 is that the Javascript VM represents Numbers as double precision floating-point, so
anything with more than 15 digits of precision gets rounded off.  I imagine your bigdecimal.js,
but it would need the numbers as strings, right?  Hence Bob's original suggestion

> Bignum support
> --------------
>                 Key: COUCHDB-796
>                 URL:
>             Project: CouchDB
>          Issue Type: Improvement
>          Components: Database Core
>    Affects Versions: 0.11
>            Reporter: Robert Newson
>             Fix For: 1.0
> CouchDB uses spidermonkey which can only handle 32 bit integer values before overflowing.
This might surprise users of map/reduce on large datasets.
> Instead, alter mochijson2.erl to handle bignums and encode numeric values as strings.

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

View raw message