summaryrefslogtreecommitdiff
path: root/jstests/numberlong2.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/numberlong2.js')
-rw-r--r--jstests/numberlong2.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/jstests/numberlong2.js b/jstests/numberlong2.js
new file mode 100644
index 0000000..2540d2d
--- /dev/null
+++ b/jstests/numberlong2.js
@@ -0,0 +1,32 @@
+// Test precision of NumberLong values with v1 index code SERVER-3717
+
+if ( 1 ) { // SERVER-3717
+
+t = db.jstests_numberlong2;
+t.drop();
+
+t.ensureIndex( {x:1} );
+
+function chk(longNum) {
+ t.remove();
+ t.save({ x: longNum });
+ assert.eq(longNum, t.find().hint({ x: 1 }).next().x);
+ assert.eq(longNum, t.find({}, { _id: 0, x: 1 }).hint({ x: 1 }).next().x);
+}
+
+chk( NumberLong("1123539983311657217") );
+chk(NumberLong("-1123539983311657217"));
+ chk(NumberLong("4503599627370495"));
+ chk(NumberLong("4503599627370496"));
+ chk(NumberLong("4503599627370497"));
+
+t.remove();
+
+s = "11235399833116571";
+for( i = 99; i >= 0; --i ) {
+ t.save( {x:NumberLong( s + i )} );
+}
+
+assert.eq( t.find().sort( {x:1} ).hint( {$natural:1} ).toArray(), t.find().sort( {x:1} ).hint( {x:1} ).toArray() );
+
+} \ No newline at end of file