mysql2 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,4 +3,6 @@ Makefile
3
3
  *.o
4
4
  *.bundle
5
5
  *.so
6
- *.a
6
+ *.a
7
+ mkmf.log
8
+ pkg/
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.2 (April 9th, 2010)
4
+ * fix a bug (copy/paste fail) around checking for empty TIME values and returning nil (thanks @marius)
5
+
3
6
  ## 0.1.1 (April 6th, 2010)
4
7
  * added affected_rows method (mysql_affected_rows)
5
8
  * added last_id method (last_insert_id)
@@ -16,7 +16,7 @@ Mysql2::Result - returned from issuing a #query on the connection. It includes E
16
16
 
17
17
  gem install mysql2
18
18
 
19
- You may have to specify --with-mysql-lib=/usr/local/lib/mysql or your path to libmysql (I'll do my best to not require that)
19
+ You may have to specify --with-mysql-config=/some/random/path/bin/mysql_config
20
20
 
21
21
  == Usage
22
22
 
@@ -58,6 +58,23 @@ How about with symbolized keys?
58
58
  # do something with row, it's ready to rock
59
59
  end
60
60
 
61
+ == Async
62
+
63
+ Mysql2::Client takes advantage of the MySQL C API's (undocumented) non-blocking function mysql_send_query for *all* queries.
64
+ But, in order to take full advantage of it in your Ruby code, you can do:
65
+
66
+ client.query("SELECT sleep(5)", :async => true)
67
+
68
+ Which will return nil immediately. At this point you'll probably want to use some socket monitoring mechanism
69
+ like EventMachine or even IO.select. Once the socket becomes readable, you can do:
70
+
71
+ # result will be a Mysql2::Result instance
72
+ result = client.async_result
73
+
74
+ NOTE: Because of the way MySQL's query API works, this method will block until the result is ready.
75
+ So if you really need things to stay async, it's best to just monitor the socket with something like EventMachine.
76
+ If you need multiple query concurrency take a look at using a connection pool.
77
+
61
78
  == Compatibility
62
79
 
63
80
  The specs pass on my system (SL 10.6.3, x86_64) in these rubies:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -346,8 +346,8 @@ static VALUE rb_mysql_result_fetch_row(int argc, VALUE * argv, VALUE self) {
346
346
  val = rb_float_new(strtod(row[i], NULL));
347
347
  break;
348
348
  case MYSQL_TYPE_TIME: // TIME field
349
- if (memcmp("00:00:00", row[i], 10) == 0) {
350
- val = rb_str_new(row[i], fieldLengths[i]);
349
+ if (memcmp("00:00:00", row[i], 8) == 0) {
350
+ val = Qnil;
351
351
  } else {
352
352
  strptime(row[i], "%T", &parsedTime);
353
353
  val = rb_funcall(rb_cTime, intern_local, 6, INT2NUM(1900+parsedTime.tm_year), INT2NUM(parsedTime.tm_mon+1), INT2NUM(parsedTime.tm_mday), INT2NUM(parsedTime.tm_hour), INT2NUM(parsedTime.tm_min), INT2NUM(parsedTime.tm_sec));
@@ -5,5 +5,5 @@ require 'mysql2_ext'
5
5
  #
6
6
  # A modern, simple and very fast Mysql library for Ruby - binding to libmysql
7
7
  module Mysql2
8
- VERSION = "0.1.1"
8
+ VERSION = "0.1.2"
9
9
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mysql2}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brian Lopez"]
12
- s.date = %q{2010-04-07}
12
+ s.date = %q{2010-04-09}
13
13
  s.email = %q{seniorlopez@gmail.com}
14
14
  s.extensions = ["ext/extconf.rb"]
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 1
9
- version: 0.1.1
8
+ - 2
9
+ version: 0.1.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Brian Lopez
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-07 00:00:00 -07:00
17
+ date: 2010-04-09 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies: []
20
20