読者です 読者をやめる 読者になる 読者になる

MySQL/Ruby 2.8.2

MySQL/Ruby にバグがあったので 2.8.2 をリリースしました。

ダウンロードはこの辺から→ http://rubyforge.org/projects/mysql-ruby/

Mysql#insert_id が 32bit を超える場合に不正な値を返すというものです。

具体的には BIGINT AUTO_INCREMENT の場合に、自動的に 2147483648(UNSIGNED BIGINT の場合は 4294967296)以上の場合に、不正な値を返します。

mysql> create table t (id bigint auto_increment, unique(id));
mysql> alter table t auto_increment=2147483645;
m.query('insert into t values (0)')
m.insert_id #=> 2147483645
m.query('insert into t values (0)')
m.insert_id #=> 2147483646
m.query('insert into t values (0)')
m.insert_id #=> 2147483647
m.query('insert into t values (0)')
m.insert_id #=> -2147483648
m.query('insert into t values (0)')
m.insert_id #=> -2147483647

場合によっては致命的なので、アップグレードしといた方が良いと思います。