Commit Graph

177 Commits

Author SHA1 Message Date
Brian Lopez d9200c43b4 add raw driver benchmark with casting for the mysql gem 2010-05-06 00:09:18 -07:00
Eric Wong f2a731e0a7 Fix memory leak from the result wrapper struct itself
Data_Make_Struct always allocates memory for us, so we
need to explicitly free the pointer in the function we
pass to the GC, not just objects internal to us.

Without this change, a slow but constant growth can be
seen with the trivial code below:

    x = Mysql2::Client.new
    loop { x.query "select 1" }
2010-05-05 18:26:29 -07:00
Eric Wong 4ac62c1333 correctly free the wrapped result in case of EOF
This is a followup to aa9f435141
which made the same change 10 lines down.
2010-05-05 17:59:14 -07:00
Eric Wong 1d92db8aab add Mysql2::Client#close method
This allows users to (manually) avoid the tricky case of hitting
a socket write during GC and potentially blocking the
interpreter during GC.  An explicit `close' is also useful in
situations where server resources are limited and a client only
needs to connect for a limited time.
2010-05-05 17:38:08 -07:00
Eric Wong f7a6b49cbd [cleanup] make all C symbols static
Other than the Init_$extension() function, the only reason
to have public symbols is for large C extensions that need
to span multiple .c files and we're not one of them.
2010-05-05 15:38:43 -07:00
Eric Wong 081eea9a9c [cleanup] quiet down warnings
This can help us notice real bugs in our code sooner.

Some of the unused variable warnings are pedantic from our usage
of -Wextra, but GCC >= 3 provides us with a handy attribute we
can use to mark variables unused.  -Wextra is also a default
flag for 1.9.2dev, so we might as well get used to it.
2010-05-05 15:30:34 -07:00
Eric Wong 59a823b6d5 release GVL for possibly blocking mysql_* library calls
There are still some corner-case calls which may cause
network activity and block the socket, but the majority
of reads/writes on the socket will release the GVL under
1.9 and be signal-safe under all versions of Ruby.

We'll also make a note of all functions calls that passed
visual inspection and add FIXME for a few more corner
cases we still need to fix.
2010-05-05 14:26:22 -07:00
Eric Wong fa213c9892 wrap mysql_real_connect with rb_thread_blocking_region
mysql_real_connect() is a blocking function that issues
blocking-but-interruptible connect(), read(), and write() system
calls.  So we'll allow other threads in the VM to run while
calling it since it can block indefinitely.

This introduces a rb_thread_blocking_region() wrapper for 1.8
which ensures any received signals can be handled gracefully
while inside blocking function calls.
2010-05-05 11:57:37 -07:00
Brian Lopez 33e0b9ea51 fix bug in show_variable method of AR adapter 2010-05-04 09:02:11 -07:00
Brian Lopez dfca514562 make specs a little finer grained, fix a few issues found along the way 2010-04-29 10:01:25 -07:00
Brian Lopez 61e748ddc4 add another check for valid datetime/timestamps. move to sscanf for datetime parsing 2010-04-29 00:45:22 -07:00
Brian Lopez 869783107d add undefined ref to PRIMARY const in AR adapter 2010-04-27 22:44:18 -07:00
Brian Lopez 46020e5ef5 add initial Sequel adapter 2010-04-25 23:13:27 -07:00
Brian Lopez 428eb7e79b Revert "Revert "for DATE columns, return ruby Date object instead of Time (didn't realize I could create them from y,m,d integers without ActiveSupport)""
This reverts commit 5e4080e4e5.
2010-04-25 21:45:40 -07:00
Brian Lopez f6d62225ee update AR benchmark to better reflect typecasting 2010-04-25 21:45:26 -07:00
Brian Lopez 39cfbe9824 updating files for 0.1.4 release 2010-04-23 17:49:19 -07:00
Brian Lopez deb8f43d93 Version bump to 0.1.4 2010-04-23 17:36:12 -07:00
Brian Lopez 30f1ff55fc bring the rest of the mysql adapter in, making the mysql2 adapter stand-alone 2010-04-23 00:33:22 -07:00
Brian Lopez a3bcec4fb4 wording clarification on readme 2010-04-22 14:24:19 -07:00
Brian Lopez 06fd523608 update benchmark results in readme 2010-04-22 13:57:34 -07:00
Brian Lopez 5e4080e4e5 Revert "for DATE columns, return ruby Date object instead of Time (didn't realize I could create them from y,m,d integers without ActiveSupport)"
The Date class is sooooo sllooowwww :)
Will probably look into bringing in http://github.com/rtomayko/date-performance at some point.

This reverts commit 51babb3362.
2010-04-22 12:37:05 -07:00
Brian Lopez c05138e328 build and use a cache of field names for results 2010-04-22 11:56:18 -07:00
Brian Lopez aa9f435141 fix a stupid bug when freeing the C result 2010-04-22 11:55:03 -07:00
Brian Lopez 51babb3362 for DATE columns, return ruby Date object instead of Time (didn't realize I could create them from y,m,d integers without ActiveSupport) 2010-04-21 10:28:25 -07:00
Brian Lopez eefa443c2e Implement a local resultset cache so we can free the mysql C result once we've cached it's rows in ruby land.
This allows the caller to iterate over the Mysql2::Result instance as many times as they want, lazily pulling what rows are needed from the mysql C result.
2010-04-21 01:40:28 -07:00
Brian Lopez efc66b6c06 update benchmark scripts 2010-04-21 01:31:46 -07:00
Brian Lopez d7c146e322 updating files for 0.1.3 release 2010-04-15 13:35:42 -07:00
Brian Lopez 7caf1b6b6a Version bump to 0.1.3 2010-04-15 13:03:21 -07:00
Brian Lopez 1d3c281904 add AR benchmark - mysql2 looks to be about 19% faster so far 2010-04-15 13:00:39 -07:00
Brian Lopez 12d4d8a0b8 set adapter name 2010-04-15 12:23:37 -07:00
Brian Lopez 4866ae0aa3 add msyql2 Arel support 2010-04-15 12:23:24 -07:00
Brian Lopez 737edcfe67 don't really need to specify a db for the escape benchmark 2010-04-15 10:53:58 -07:00
Brian Lopez 1c9e94f7e9 add initial ActiveRecord driver 2010-04-15 00:56:51 -07:00
Brian Lopez 288ed22806 add initial EM Deferrable API 2010-04-14 12:55:27 -07:00
Brian Lopez 7d6bbbcdd2 update files for 0.1.2 release 2010-04-09 10:05:01 -07:00
Brian Lopez 8184ed66fe Version bump to 0.1.2 2010-04-09 10:04:38 -07:00
Brian Lopez 3155cb799e fix copy-paste fail found by @marius 2010-04-09 08:56:30 -07:00
Brian Lopez ccacb2de3c a couple more notes about async 2010-04-07 10:47:16 -07:00
Brian Lopez 5b1e0a261c add some notes about async support to readme 2010-04-07 10:08:04 -07:00
Brian Lopez 64f69cf180 update install instructions 2010-04-07 09:59:37 -07:00
Brian Lopez aa0528d1ff update gitignore 2010-04-07 09:58:19 -07:00
Brian Lopez ea9b21f632 update files for 0.1.1 release 2010-04-07 09:52:05 -07:00
Brian Lopez a9df890c1b Version bump to 0.1.1 2010-04-07 09:48:57 -07:00
Brian Lopez 8f93f830c1 add affected_rows method (mysql_affected_rows) 2010-04-07 09:47:45 -07:00
Brian Lopez e20df5c140 add last_id method (last_insert_id) 2010-04-07 09:36:36 -07:00
Brian Lopez 3a32dc79ec reconnect by default 2010-04-07 09:23:14 -07:00
Brian Lopez 7131752757 add initial async query support 2010-04-07 09:16:30 -07:00
Brian Lopez 80a8602fbb borrow the more flexible extconf from the mysqlplus project 2010-04-07 07:03:31 -07:00
Brian Lopez 11216551cd typo 2010-04-06 15:32:36 -07:00
Brian Lopez db454d3f15 initial stab at finding mysql headers easier 2010-04-06 15:26:09 -07:00