Commit Graph

129 Commits

Author SHA1 Message Date
Tyler Brock f55fc95bf4 RUBY-432
Do not encode strings to utf-8 after checking that utf-8 is valid.

Before this fix, an encoding operation could turn valid utf-8 into
invalid utf-8 if an encoding that requires conversion is forced on a
valid string.
2012-06-01 14:20:15 -04:00
Tyler Brock ad8a933cd4 minor: fix extension compile errors 2012-06-01 13:11:00 -04:00
Tyler Brock d86c4d95f7 RUBY-435
Use rb_time_num_new for Time value when available (Ruby >= 1.9)
2012-05-15 16:52:53 -04:00
Gary Murakami 50d6902d80 Revert cbson.c, to be revisited for malloc/free reduction.
README.md has API Documentation note at the top to help users match documentation to driver version, DOCS-197.
 Expanded performance tests, for insert with multiple docs.
2012-05-03 16:43:12 -04:00
Gary Murakami 962c4f2f2e eliminate last explicit malloc/free for array key name, more performance measurements 2012-04-30 17:22:01 -04:00
Gary Murakami 7384585d98 write_element optimization for T_ARRAY to only allocate the buffer for the index key once instead of repeatedly for every index. This results in a 2.5x improvement for array sizes around 32. Also includes improvements to the performance tests and graphs, with plothover to show [x,y] values. 2012-04-25 17:15:31 -04:00
Tyler Brock 1be40495c2 RUBY-412 added if statement to case T_DATA to catch unserializable time classes in Ruby >= 1.9.3 2012-02-14 16:11:52 -05:00
Kyle Banker e613880922 RUBY-327 2011-09-19 11:40:40 -04:00
Kyle Banker 3c127984a3 RUBY-242 check BSON size on a per-connection basis. 2011-08-25 14:57:24 -04:00
renctan 19c9cb778b Fixed thet timestamp serialization issues for 32bit machines. 2011-08-24 13:14:36 -04:00
Kyle Banker ace1313b99 RUBY-302 RUBY-303 fix buffer namespace conflict by renaming to bson_buffer. 2011-08-08 15:06:39 -04:00
Kyle Banker 135bebd9ab RUBY-270 support 's' regex option.
Note: Ruby includes dotall 's' semantics on 'm' option.
2011-05-09 14:17:56 -04:00
Kyle Banker 05bf234bb8 RUBY-255 Support BSON Timestamp 2011-03-28 14:36:49 -04:00
Kyle Banker b48a2bd84f RUBY-253 fix UTF8 check for Ruby 1.9 2011-03-24 12:11:12 -04:00
Kyle Banker a8ce896c9f RUBY-245 Unique object id with timestamp 2011-03-15 16:40:27 -04:00
Hongli Lai (Phusion) 2335108162 When possible, use system_free() to free asprintf() results.
On OS X, Ruby Enterprise Edition allocates memory with tcmalloc which is
not compatible with the system malloc. asprintf() allocates memory with
the system malloc so we need to free its result with the system free()
function instead of tcmalloc's free() function. REE's system_free()
API call does that.
2011-02-14 09:41:39 -05:00
Kyle Banker 76730d4a7c RUBY-233 show invalid key on invalid key exception 2011-02-04 12:07:28 -05:00
Kyle Banker 9798626053 RUBY-188 fix for bson_ext on Windows 2011-01-04 18:09:41 -05:00
Kyle Banker bc5dcdfc7f Fix for undefined symbol rb_long2int 2011-01-03 16:15:58 -05:00
eregon a0389b0668 define R{ARRAY,STRING}_LENINT if there are not 2011-01-03 14:21:12 -05:00
eregon 3ab2acbf4f Get rid of "implicit conversion 64-bit 32-bit" warnings
This resolves "warning: implicit conversion shortens 64-bit value into a 32-bit value"
The problem is String/Array length is a long (so 64 bits on some platforms instead of 32) and the extension use int
There are 2 solutions:
* use long everywhere (but waste of memory, and hard to do)
* cast into ints (but potential lost of data)
I did the second, because all these cases are about String/Array lengths,
and it is very unlikely to have a String/Array of more than 2 billions elements (that would mean at least 2GB in memory).

The last cast might need to be reviewed (htonl((int)time(NULL))) because htonl want a 32-bit int, but time(NULL) will overflow with the year 2038 problem.
2011-01-03 14:20:58 -05:00
Kyle Banker c0e972470e Fixed BSON_CODER.update_max_bson_size return value 2011-01-03 14:05:42 -05:00
Kyle Banker 9da68bb3db RUBY-189 use result of ismaster's maxBsonObjectSize 2010-12-29 18:06:31 -05:00
eregon 191db33a1a fix declaration-after-statement warnings of ruby trunk
The commit bd0a9d2fb6
adds -Werror=declaration-after-statement. This may cause an error and make gem installation fail
See http://www.ruby-forum.com/topic/714046
2010-12-29 12:06:38 -05:00
Kyle Banker 6f067756c8 Fix for serializing int/long 2010-11-08 17:21:17 -05:00
Kyle Banker b3ed1486e5 minor: updates for removal deprecated DB and Connection methods and ObjectID 2010-10-04 13:28:26 -04:00
Kyle Banker 2ed0adbbc6 Fix C extension to handle BSON::Code (no longer a subclass of String) 2010-10-01 17:03:26 -04:00
Kyle Banker 45e6aaef43 minor: fast_pack no longer used 2010-09-20 14:01:17 -04:00
Kyle Banker b077ef992d RUBY-182 Rubinius compatibility; use rb_ary_entry() in lieu of RARRAY_PTR 2010-09-20 13:48:06 -04:00
Kyle Banker 81395373e9 RUBY-183 better int bson performance (Chuck Remes) 2010-09-20 11:57:06 -04:00
Hongli Lai (Phusion) bfa4926e1d Optimize ObjectId#generate: cache the MD5 of the host name and generate counters in C instead of Ruby. 2010-09-14 10:37:22 -04:00
Hongli Lai (Phusion) 3f66721858 Optimize BSON C extension: cache some symbols instead of interning them over and over. 2010-09-13 10:51:29 -04:00
Kyle Banker 7ca4683843 RUBY-173 better hash class detection for BSON 2010-08-28 16:35:45 -04:00
Kyle Banker 5838b9aef7 RUBY-173 allow HashWithIndifferentAccess 2010-08-28 12:19:26 -04:00
Mike Dirolf 06602bd41e clean up C ext Time handling 2010-08-25 11:27:38 -04:00
Mike Dirolf 7702d671ea Use C objectid_generate for ObjectId in addition to ObjectID.
Also, remove broken defined? check from objectid.rb and object_id.rb -
it was never doing anything since we require those files at the top of
cbson.c.
2010-08-25 10:23:18 -04:00
Kyle Banker 02a0c7c2dc RUBY-165 raise error if BSON.serialize is passed something other than a hash 2010-08-24 14:01:24 -04:00
Kyle Banker c7c309b00d RUBY-158 deprecate BSON::ObjectID for BSON::ObjectId 2010-08-24 12:49:23 -04:00
Kyle Banker a24448d911 attempted fix for bson_ext on solaris (slyphon) 2010-07-02 16:03:42 -04:00
Mike Dirolf d68e42812e respect Encoding.default_internal in BSON decoder 2010-05-07 15:15:52 -04:00
sleverbor ed76126a12 namespaced the OrderedHash class 2010-05-06 18:25:18 -07:00
Kyle Banker 8ac3171981 ensure compatibility with early releases of Ruby 1.8.5 (dfitzgibbon) RUBY-125 2010-04-28 10:43:54 -04:00
Kyle Banker 910a82de7e must use Connection.paired for paired connections 2010-04-07 17:10:28 -04:00
Kyle Banker e18d2d6fbb removed deprecated RegexpOfHolding 2010-04-07 16:32:25 -04:00
Kyle Banker 45d3b91882 exception refinements for bson split 2010-04-05 18:24:31 -04:00
Kyle Banker c4d5cb641b renamed mongo_bson to bson 2010-04-05 10:39:55 -04:00
Charles Remes b669b625cc Changed RREGEXP_SOURCE macro to RREGX_SRC so it matches all rubies 2010-03-19 09:10:08 -05:00
Charles Remes a9b3c8e7a5 Try again: Split the BSON logic out to a separate gem
- changed the BSON constant to BSON_CODER and scoped it inside
      of a module

    - changed the directory layout for all of the BSON related files

    - updated the C extension to find the BSON files at their new
      directory locations

    - updated the C extension to use better/safer macros for accessing
      the C API; extension now compiles cleanly under rubinius/rbx

    - changed directory layout for BSON related tests

    - modified the Rakefile to understand the new layout
2010-03-17 14:55:19 -05:00
Kyle Banker 0709b98082 Rails 3 HashWithIndifferentAccess fixes 2010-03-02 11:11:07 -05:00
Kyle Banker e3d746096d minor: docs 2010-03-01 12:09:21 -05:00