Skip to content

Commit

Permalink
bump node-mongodb-native driver to 0.9.6.6
Browse files Browse the repository at this point in the history
  • Loading branch information
aheckmann committed Jul 12, 2011
1 parent cb50c89 commit 2a2fec9
Show file tree
Hide file tree
Showing 60 changed files with 3,414 additions and 1,804 deletions.
2 changes: 2 additions & 0 deletions support/node-mongodb-native/.npmignore
@@ -0,0 +1,2 @@
./data
./benchmark
12 changes: 12 additions & 0 deletions support/node-mongodb-native/HISTORY
@@ -1,3 +1,15 @@
0.9.6-6 2011-07-12
* FindAndModify not returning error message as other methods Issue #277
* Added test coverage for $push, $pushAll and $inc atomic operations
* Correct Error handling for non 12/24 bit ids on Pure JS ObjectID class Issue #276
* Fixed terrible deserialization bug in js bson code #285
* Fix by andrewjstone to avoid throwing errors when this.primary not defined

0.9.6-5 2011-07-06
* Rewritten BSON js parser now faster than the C parser on my core2duo laptop
* Added option full to indexInformation to get all index info Issue #265
* Passing in ObjectID for new Gridstore works correctly Issue #272

0.9.6-4 2011-07-01
* Added test and bug fix for insert/update/remove without callback supplied

Expand Down
94 changes: 94 additions & 0 deletions support/node-mongodb-native/benchmark/bson_benchmark.js
@@ -0,0 +1,94 @@
var BSON = require('../lib/mongodb').BSONNative.BSON,
ObjectID = require('../lib/mongodb').BSONNative.ObjectID,
debug = require('util').debug,
inspect = require('util').inspect;

var BSON = require('../lib/mongodb').BSONPure.BSON;
var ObjectID = require('../lib/mongodb').BSONPure.ObjectID;

// require('util').debug(require('util').inspect(BSON))

var COUNT = 10000;
// var COUNT = 1;
// var object = {
// string: "Strings are great",
// decimal: 3.14159265,
// bool: true,
// integer: 5,
//
// subObject: {
// moreText: "Bacon ipsum dolor sit amet cow pork belly rump ribeye pastrami andouille. Tail hamburger pork belly, drumstick flank salami t-bone sirloin pork chop ribeye ham chuck pork loin shankle. Ham fatback pork swine, sirloin shankle short loin andouille shank sausage meatloaf drumstick. Pig chicken cow bresaola, pork loin jerky meatball tenderloin brisket strip steak jowl spare ribs. Biltong sirloin pork belly boudin, bacon pastrami rump chicken. Jowl rump fatback, biltong bacon t-bone turkey. Turkey pork loin boudin, tenderloin jerky beef ribs pastrami spare ribs biltong pork chop beef.",
// longKeylongKeylongKeylongKeylongKeylongKey: "Pork belly boudin shoulder ribeye pork chop brisket biltong short ribs. Salami beef pork belly, t-bone sirloin meatloaf tail jowl spare ribs. Sirloin biltong bresaola cow turkey. Biltong fatback meatball, bresaola tail shankle turkey pancetta ham ribeye flank bacon jerky pork chop. Boudin sirloin shoulder, salami swine flank jerky t-bone pork chop pork beef tongue. Bresaola ribeye jerky andouille. Ribeye ground round sausage biltong beef ribs chuck, shank hamburger chicken short ribs spare ribs tenderloin meatloaf pork loin."
// },
//
// subArray: [1,2,3,4,5,6,7,8,9,10],
// anotherString: "another string"
// }

var x, start, end, i
var objectBSON, objectJSON

console.log(COUNT + "x (objectBSON = BSON.serialize(object))")
start = new Date

for (i=COUNT; --i>=0; ) {
var object = {
id: new ObjectID(),
string: "Strings are great",
decimal: 3.14159265,
bool: true,
integer: 5,

subObject: {
moreText: "Bacon ipsum dolor sit amet cow pork belly rump ribeye pastrami andouille. Tail hamburger pork belly, drumstick flank salami t-bone sirloin pork chop ribeye ham chuck pork loin shankle. Ham fatback pork swine, sirloin shankle short loin andouille shank sausage meatloaf drumstick. Pig chicken cow bresaola, pork loin jerky meatball tenderloin brisket strip steak jowl spare ribs. Biltong sirloin pork belly boudin, bacon pastrami rump chicken. Jowl rump fatback, biltong bacon t-bone turkey. Turkey pork loin boudin, tenderloin jerky beef ribs pastrami spare ribs biltong pork chop beef.",
longKeylongKeylongKeylongKeylongKeylongKey: "Pork belly boudin shoulder ribeye pork chop brisket biltong short ribs. Salami beef pork belly, t-bone sirloin meatloaf tail jowl spare ribs. Sirloin biltong bresaola cow turkey. Biltong fatback meatball, bresaola tail shankle turkey pancetta ham ribeye flank bacon jerky pork chop. Boudin sirloin shoulder, salami swine flank jerky t-bone pork chop pork beef tongue. Bresaola ribeye jerky andouille. Ribeye ground round sausage biltong beef ribs chuck, shank hamburger chicken short ribs spare ribs tenderloin meatloaf pork loin."
},

subArray: [1,2,3,4,5,6,7,8,9,10],
anotherString: "another string"
}

objectBSON = BSON.serialize(object, null, true)
}

end = new Date
console.log("bson size (bytes): ", objectBSON.length)
console.log("time = ", end - start, "ms -", COUNT * 1000 / (end - start), " ops/sec")


// console.log(COUNT + "x (objectJSON = JSON.stringify(object))")
// start = new Date
//
// for (i=COUNT; --i>=0; ) {
// objectJSON = JSON.stringify(object)
// }
//
// end = new Date
// console.log("json size (chars): ", objectJSON.length)
// console.log("time = ", end - start, "ms -", COUNT * 1000 / (end - start), " ops/sec")


console.log(COUNT + " BSON.deserialize(objectBSON)")
start = new Date

for (i=COUNT; --i>=0; ) {
x = BSON.deserialize(objectBSON)
// debug("=====================================================================")
// debug(inspect(x))
// x = BSON.deserialize2(objectBSON)
// debug(inspect(x))
}

end = new Date
console.log("time = ", end - start, "ms -", COUNT * 1000 / (end - start), " ops/sec")


// console.log(COUNT + " JSON.parse(objectJSON)")
// start = new Date
//
// for (i=COUNT; --i>=0; ) {
// x = JSON.parse(objectJSON)
// }
//
// end = new Date
// console.log("time = ", end - start, "ms -", COUNT * 1000 / (end - start), " ops/sec")
17 changes: 12 additions & 5 deletions support/node-mongodb-native/benchmark/streaming_benchmark.js
Expand Up @@ -6,14 +6,21 @@ var Db = require('mongodb').Db,
Cursor = require('mongodb').Cursor,
Collection = require('mongodb').Collection,
sys = require('util'),
debug = require('util').debug;
var BSON = require('bson');
debug = require('util').debug,
inspect = require('util').inspect;

// var BSON = require('bson');

var parser = require('mongodb').BSONPure;
var objectID = require('mongodb').ObjectID;
// var parser = BSON;
// var objectID = BSON.ObjectID;

var db = new Db('streaming_benchmark', new Server("127.0.0.1", 27017, {auto_reconnect: true, poolSize:4}), {})
// Set native deserializer
db.bson_deserializer = BSON;
db.bson_serializer = BSON;
db.pkFactory = BSON.ObjectID;
db.bson_deserializer = parser;
db.bson_serializer = parser;
db.pkFactory = objectID;

// Open the db
db.open(function(err, client) {
Expand Down
10 changes: 5 additions & 5 deletions support/node-mongodb-native/external-libs/bson/.lock-wscript
@@ -1,9 +1,9 @@
argv = ['/usr/local/bin/node-waf', 'configure', 'build']
blddir = '/Users/rauchg/Sites/mongoose/support/node-mongodb-native/external-libs/bson/build'
blddir = '/home/aaron/test/mongoose/support/node-mongodb-native/external-libs/bson/build'
commands = {'dist': 0, 'configure': True, 'distcheck': 0, 'install': 0, 'build': True, 'clean': 0, 'distclean': 0, 'check': 0, 'uninstall': 0}
cwd = '/Users/rauchg/Sites/mongoose/support/node-mongodb-native/external-libs/bson'
environ = {'SSH_AUTH_SOCK': '/tmp/launch-kXs7y7/Listeners', 'LSCOLORS': 'gxfxcxdxbxegedabagacad', 'VERSIONER_PYTHON_PREFER_32_BIT': 'no', 'TMPDIR': '/var/folders/vd/vd3w4ReHF7iw7iMKNtWUu++++TI/-Tmp-/', 'SHELL': '/bin/bash', 'LOGNAME': 'rauchg', 'USER': 'rauchg', 'HOME': '/Users/rauchg', 'PATH': '/opt/local/bin:/opt/local/sbin:/Users/rauchg/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin', 'DISPLAY': '/tmp/launch-DNLBiU/org.x:0', '_': '/usr/bin/make', 'TERM_PROGRAM': 'iTerm.app', 'LANG': 'en_US.UTF-8', 'TERM': 'xterm', 'Apple_PubSub_Socket_Render': '/tmp/launch-dKdga3/Render', 'COLORFGBG': '15;0', 'VERSIONER_PYTHON_VERSION': '2.6', 'SHLVL': '1', 'OLDPWD': '/Users/rauchg/Sites/mongoose/support', 'CLICOLOR': '1', '__CF_USER_TEXT_ENCODING': '0x1F5:0:0', 'MAKELEVEL': '2', 'PWD': '/Users/rauchg/Sites/mongoose/support/node-mongodb-native', 'MAKEFLAGS': '', 'COMMAND_MODE': 'unix2003', 'MFLAGS': '', 'EDITOR': 'vim'}
cwd = '/home/aaron/test/mongoose/support/node-mongodb-native/external-libs/bson'
environ = {'GDM_KEYBOARD_LAYOUT': 'us', 'GIT_PS1_SHOWDIRTYSTATE': '1', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'WINDOWPATH': '7', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'LOGNAME': 'aaron', 'USER': 'aaron', 'GNOME_KEYRING_CONTROL': '/tmp/keyring-2HEsCI', 'HOME': '/home/aaron', 'PS1': '\\[\\e]0;\\u@\\h: \\w\\a\\]\\[\\033[01;32m\\]\\u@\\h\\[\\033[01;34m\\] \\w\\[\\033[01;33m\\]$(__git_ps1)\\[\\033[01;34m\\] \\$\\[\\033[00m\\] ', 'DISPLAY': ':0', 'MAKEFLAGS': 'w', 'SSH_AGENT_PID': '1589', 'LANG': 'en_US.UTF-8', 'TERM': 'xterm-256color', 'SHELL': '/bin/bash', 'XAUTHORITY': '/var/run/gdm/auth-for-aaron-haL4ZG/database', 'LANGUAGE': 'en_US:en', 'SESSION_MANAGER': 'local/aaron-laptop:@/tmp/.ICE-unix/1551,unix/aaron-laptop:/tmp/.ICE-unix/1551', 'XDG_DATA_DIRS': '/usr/share/gnome:/usr/local/share/:/usr/share/', 'MANDATORY_PATH': '/usr/share/gconf/gnome.mandatory.path', 'NODE_ENV': 'development', 'COMPIZ_CONFIG_PROFILE': 'ubuntu', 'WINDOWID': '29361050', '_': '/usr/bin/make', 'MFLAGS': '-w', 'USERNAME': 'aaron', 'MAKELEVEL': '2', 'SSH_AUTH_SOCK': '/tmp/keyring-2HEsCI/ssh', 'EXPRESS_ENV': 'beta-dev', 'PATH': '/home/aaron/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games', 'DEFAULTS_PATH': '/usr/share/gconf/gnome.default.path', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-gnome:/etc/xdg', 'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-SEarfTjqH4,guid=8bf87c39fcf7f37252dfed5900000022', 'ORBIT_SOCKETDIR': '/tmp/orbit-aaron', 'XDG_SESSION_COOKIE': '6d29b3478038cccf88e50b654c2a80c6-1310064742.534891-1641641818', 'GDMSESSION': 'gnome', 'DESKTOP_SESSION': 'gnome', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'GNOME_KEYRING_PID': '1532', 'UBUNTU_MENUPROXY': 'libappmenu.so', 'OLDPWD': '/home/aaron/test/mongoose/support/node-mongodb-native/test', 'GDM_LANG': 'en_US.utf8', 'GTK_MODULES': 'canberra-gtk-module', 'SPEECHD_PORT': '7560', 'SHLVL': '1', 'PWD': '/home/aaron/test/mongoose/support/node-mongodb-native', 'COLORTERM': 'gnome-terminal', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:'}
files = []
hash = 0
options = {'compile_targets': None, 'force': False, 'verbose': 0, 'nocache': False, 'progress_bar': 0, 'check_cxx_compiler': 'g++', 'destdir': '', 'keep': False, 'zones': '', 'blddir': '', 'prefix': '/usr/local/', 'debug': False, 'srcdir': '', 'jobs': 4}
srcdir = '/Users/rauchg/Sites/mongoose/support/node-mongodb-native/external-libs/bson'
options = {'compile_targets': None, 'force': False, 'verbose': 0, 'nocache': False, 'progress_bar': 0, 'check_cxx_compiler': 'g++ icpc sunc++', 'destdir': '', 'keep': False, 'zones': '', 'blddir': '', 'prefix': '/usr/local/', 'debug': False, 'srcdir': '', 'jobs': 2}
srcdir = '/home/aaron/test/mongoose/support/node-mongodb-native/external-libs/bson'
16 changes: 13 additions & 3 deletions support/node-mongodb-native/external-libs/bson/binary.cc
Expand Up @@ -184,13 +184,20 @@ Handle<Value> Binary::Write(const Arguments &args) {
HandleScope scope;

// Ensure we have the right parameters
if(args.Length() != 1 && (!args[0]->IsString() || Buffer::HasInstance(args[0]))) return VException("Function takes one argument of type String or Buffer");
if(args.Length() == 1 && (!args[0]->IsString() || Buffer::HasInstance(args[0]))) return VException("Function takes one argument of type String or Buffer");
if(args.Length() == 2 && (!args[0]->IsString() || Buffer::HasInstance(args[0])) && !args[1]->IsUint32()) return VException("Function takes one argument of type String or Buffer");

// Reference variables
char *data;
uint32_t length;
uint32_t offset = 0;
Local<Object> obj = args[0]->ToObject();

// Unpack the offset value
if(args.Length() == 2) {
offset = args[1]->ToUint32()->Value();
}

// If we have a buffer let's retrieve the data
if(Buffer::HasInstance(obj)) {
#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3
Expand Down Expand Up @@ -218,10 +225,13 @@ Handle<Value> Binary::Write(const Arguments &args) {
binary->number_of_bytes = (binary->number_of_bytes * 2) + length;
}

// If no offset specified use internal index
if(offset == 0) offset = binary->index;

// Write the element out
memcpy((binary->data + binary->index), data, length);
memcpy((binary->data + offset), data, length);
// Update the index pointer
binary->index = binary->index + length;
binary->index = offset + length;
// free the memory if we have allocated
if(!Buffer::HasInstance(args[0])) {
free(data);
Expand Down

0 comments on commit 2a2fec9

Please sign in to comment.