id:kazuhoさんが作っているQ4M を早速試してみました。入手はsvnから。結論から言うとちょっと動かなかったのだけれども、もうすでにコミットされてない部分もありそうだし、とりあえず報告とかもかねて。

まずmysql-5.1.xサポートなので、mysql-5.1.22-rcをDL、./configure --prefix=/usr/local/mysql-5.1という設定だけでインストール。

次にq4mディレクトリで
glibtoolize --copy (glibtoolizeなのはとりあえずmacだから) aclocal -I . autoheader automake --add-missing -coy autoconf
してから、configure。
configure --with-mysql=/path/to/mysql-5.1.22-rc --lib-dir=/usr/local/mysql-5.1/lib make make install
mysqlはmysqld_safeで立ち上げて、横で
mysqladmin -u root create mq mysql -u root mq
テーブルスキーマはとりあえずなんでもよさそうだったのでこんな感じで
CREATE TABLE mq ( id TEXT NOT NULL, data BLOB, inserted_on TIMESTAMP NOT NULL ) ENGINE=queue;
この状態で以下のようなperlスクリプトを実行:
use strict; use Time::HiRes qw(time); use Digest::MD5 qw(md5_hex); use DBI; my $dbh = DBI->connect('dbi:mysql:dbname=mq', 'root', undef, {AutoCommit => 1, RaiseError => 1}); my $sth = $dbh->prepare("INSERT INTO mq (id, data) VALUES (?, ?)"); foreach my $i (1..20) { $sth->execute(md5_hex(time(), {}, $$, rand()), $i); } $dbh->disconnect;
まず一発目。perl insert.plをすると"ERROR 2013 (HY000): Lost connection to MySQL server during query"。おっと、裏のプロセスが落ちた・・・データを見ると一応インサートそれてるっぽいので、取り急ぎ削除してやりなおそうと思うと
mysql> delete from mq;ERROR 2013 (HY000): Lost connection to MySQL server during query mysql> delete from mq; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 2 Current database: mq ERROR 2013 (HY000): Lost connection to MySQL server during query mysql>
ぐへ。削除できない・・・。

ここが今の状態。結構良い時間になったので今日はここまでかな。