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 …[さらに読む]