Commit Graph

225 Commits

Author SHA1 Message Date
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
Brian Lopez e8b1a18522 I dunno why this bothered me 2010-04-06 09:25:43 -07:00
Brian Lopez 1f5ccc6e80 update install notes now that the gem is pushed 2010-04-06 08:54:30 -07:00