mysql2 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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