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
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
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
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
3155cb799e
fix copy-paste fail found by @marius
2010-04-09 08:56:30 -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
ec40ee8f06
add ssl support
2010-04-05 23:30:36 -07:00
Brian Lopez
807f0a2730
slight change to socket monitoring loop per code-review from @tmm1
2010-04-05 21:13:13 -07:00
Brian Lopez
3357d3b077
show who we're talking about ;)
2010-04-05 20:53:32 -07:00
Brian Lopez
c2fd214cb4
convert over to mysql_send_query/mysql_read_query_result non-blocking API
2010-04-05 20:51:59 -07:00
Brian Lopez
7bac2c520a
add Mysql2::Error exception type, use it
2010-04-04 23:46:42 -07:00
Brian Lopez
9b59478cf6
allow access to file descriptor in C, EventMachine anyone? ;)
2010-04-04 23:31:32 -07:00
Brian Lopez
c439865a1f
remove invalid errors for valid queries without results
2010-04-04 12:58:41 -07:00
Brian Lopez
cdb4137979
whitespace
2010-04-04 12:17:40 -07:00
Brian Lopez
0a733a1f02
finally add real date/time/datetime parsing
2010-04-03 16:51:10 -07:00
Brian Lopez
b820100249
add Mysql2::Client#info and Mysql2::Client#server_info methods
2010-04-03 12:15:16 -07:00
Brian Lopez
677c309963
compare length of original and escaped string, if they match return the original
2010-04-03 01:42:15 -07:00
Brian Lopez
1b9e35712f
add support for setting MYSQL_OPT_CONNECT_TIMEOUT setting
2010-04-03 01:36:30 -07:00
Brian Lopez
2f380fd0ff
bugfix or escape method
2010-04-03 01:35:41 -07:00
Brian Lopez
799f9809d0
must connect with a user, show errors again
2010-04-02 20:24:13 -07:00
Brian Lopez
82e2a1de21
add initial support for connecting with options
2010-04-02 20:14:29 -07:00
Brian Lopez
6c76cbbda0
return the actual value for TINY fields - let the caller coerce into bool
2010-04-02 16:32:18 -07:00
Brian Lopez
559bd3d426
reorg vars
2010-04-02 16:14:03 -07:00
Brian Lopez
872bdb0caf
rename method to each, seek dataset to beginning on each call of #each
2010-04-02 15:32:58 -07:00
Brian Lopez
d90e2a3187
remove fetch_row(s) methods, mixin Enumerable
2010-04-02 11:18:13 -07:00
Brian Lopez
b5f22d7c05
check charsetnr flag as well
2010-04-01 14:45:58 -07:00
Brian Lopez
bbf7585d09
use binary encoding on fields that have the binary flag set
2010-04-01 14:29:20 -07:00
Brian Lopez
bd25b31731
formatting
2010-04-01 12:58:31 -07:00
Brian Lopez
858523d7a9
force string encoding to utf8 in 1.9
2010-04-01 12:56:49 -07:00
Brian Lopez
953f547f79
some misc cleanup
2010-04-01 12:04:48 -07:00
Brian Lopez
631456fc58
add escape method
2010-04-01 11:44:59 -07:00
Brian Lopez
7e64570770
turn off debug symbols again, put back benchmark script
2010-03-31 08:56:07 -07:00
Brian Lopez
26619b10b6
misc updates
2010-03-30 23:54:07 -07:00
Brian Lopez
1848b0da4a
mostly flesh out mysql type to ruby type conversion mapping
2010-03-30 23:30:06 -07:00
Brian Lopez
c844c66046
add initial type checking and ruby object creation from resultset
2010-03-30 17:55:16 -07:00
Brian Lopez
ce559dded2
temporarily print error msgs to stdout
2010-03-30 16:41:02 -07:00