Ruby/MySQL 3.0.1 を作りました。相変わらずアルファ版です。
インストールは次のように。
# sudo gem install tmtm-ruby-mysql --source http://gems.github.com
3.0.0 からの変更点
- Mysql#query で勝手にプリペアドステートメントを使うのをやめました。いろいろと複雑になってたので。ただし、クエリ文字列以外の引数がついている場合はプリペアドステートメントを使用します。
mysql.query("select 1,2,3") # プリペアドステートメントではない mysql.query("select ?,?,?", 1, 2, 3) # プリペアドステートメント
- Mysql::Result#fetch 等が返すレコードの値は、Ruby の適切な値に変換するようにしました。
mysql.query("select 123,'abc'").fetch # => [123, "abc"]
- Mysql::Statement#execute も Mysql::Result を返すようにしました。正確には Mysql::Result のサブクラスですが。それに伴い Mysql::Statement#each, #fetch 等は廃止しました。
Ruby/MySQL 3.0 全体については id:tmtms:20090322:1237719050 をどうぞ。
MySQL/Ruby 2.x でできるのに Ruby/MySQL 3.0 でできないこと
- サーバーサイドカーソル。3.0 ではプリペアドステートメントを使っても結果レコードを一気に取ってきてしまいます。
- マルチプルステートメント。「;」で連結された複数のクエリをサーバー側で複数クエリと認識して処理する機能です。
両方とも誰も使ってないですよね (^^;
[追記]
- LOAD DATA LOCAL INFILE 命令は発行できません。
- my.cnf ファイルを読み込む機能がありません。
それ以外はたいていは機能としては存在すると思います。MySQL/Ruby 2.x との互換が重要な場合には、require "mysql/compat"
しておけば、ある程度はそれなりに動くんではないかと思います。
3.0.0 から4ヶ月も経ってる割にはこの程度… まあ、実質は数日程なのですが。今後はもうちょっと更新頻度をあげたいところです。
ということで、よろしければどうぞ。