Return-Path: Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: (qmail 80278 invoked from network); 8 Jan 2010 14:31:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 8 Jan 2010 14:31:23 -0000 Received: (qmail 85509 invoked by uid 500); 8 Jan 2010 14:31:23 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 85443 invoked by uid 500); 8 Jan 2010 14:31:23 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 85433 invoked by uid 99); 8 Jan 2010 14:31:22 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 08 Jan 2010 14:31:22 +0000 X-ASF-Spam-Status: No, hits=-1998.5 required=10.0 tests=ALL_TRUSTED,NORMAL_HTTP_TO_IP,WEIRD_PORT X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 08 Jan 2010 14:31:15 +0000 Received: from brutus.apache.org (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 66485234C1E9 for ; Fri, 8 Jan 2010 06:30:54 -0800 (PST) Message-ID: <1137113496.121581262961054417.JavaMail.jira@brutus.apache.org> Date: Fri, 8 Jan 2010 14:30:54 +0000 (UTC) From: "Brian Candler (JIRA)" To: dev@couchdb.apache.org Subject: [jira] Created: (COUCHDB-617) View server turning integers into floats MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org View server turning integers into floats ---------------------------------------- Key: COUCHDB-617 URL: https://issues.apache.org/jira/browse/COUCHDB-617 Project: CouchDB Issue Type: Bug Environment: 0.11.0b894112 Ubuntu Karmic standard erlang 13.b.1 package xulrunner 1.9.1.6 Reporter: Brian Candler Somewhere between the view server and the client, large integer values are having .0 appended to make them look like floats. This is OK: $ curl -X POST -d '{"map":"function(doc) { emit(2000000000,null); }"}' http://127.0.0.1:5984/test_suite_db/_temp_view {"total_rows":3,"offset":0,"rows":[ {"id":"bar","key":2000000000,"value":null}, {"id":"baz","key":2000000000,"value":null}, {"id":"foo","key":2000000000,"value":null} ]} But here's a large integer getting the .0 appended: $ curl -X POST -d '{"map":"function(doc) { emit(1262958680124,null); }"}' http://127.0.0.1:5984/test_suite_db/_temp_view {"total_rows":3,"offset":0,"rows":[ {"id":"bar","key":1262958680124.0,"value":null}, {"id":"baz","key":1262958680124.0,"value":null}, {"id":"foo","key":1262958680124.0,"value":null} ]} And some values are getting turned into exponential format: $ curl -X POST -d '{"map":"function(doc) { emit(3000000000,null); }"}' http://127.0.0.1:5984/test_suite_db/_temp_view {"total_rows":3,"offset":0,"rows":[ {"id":"bar","key":3.0e+9,"value":null}, {"id":"baz","key":3.0e+9,"value":null}, {"id":"foo","key":3.0e+9,"value":null} ]} It appears to affect integers larger than 2^31, but these are still much smaller than the 2^48 mantissa of IEEE double precision (which Javascript uses). Hence they should be accurately represented as integers, not floats. If I run the view server by itself from the command line, all works properly: $ bin/couchjs share/server/main.js ["reset"] true ["add_fun","function(doc) { emit(1262958680124,null); }"] true ["add_fun","function(doc) { emit(3000000000,null); }"] true ["map_doc",{}] [[[1262958680124,null]], [[3000000000,null]]] Therefore it looks like the problem is in the Erlang JSON deserialisation side. i.e. it's not keeping these values as large integers, when it could be. NOTE: I have another machine, running a similar recent couchdb trunk (0.11.0b894828) plus Ubuntu Karmic Server Edition built against libmozjs 1.8.1.16 (not xulrunner). This exhibits the same behaviour as above. But the problem *doesn't* appear on another, older CouchDB installation I have. This is 0.11.0a813819 running under Ubuntu Hardy, with erlang 12.b.5 and libmozjs 1.8.1.18 {"total_rows":1,"offset":0,"rows":[ {"id":"person","key":3000000000,"value":null} ]} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.