DBD::mysql の不具合っぽい挙動を調べた

DBIのプレースホルダーで起こった謎な挙動 - $shibayu36->blog;(http://shibayu36.hatenablog.com/entry/2013/03/04/102518) という記事が気になったので、ちょっと調査してみました。
3
tsucchi @tsucchi

[perl][db]バグっぽい、ってかバグだねこれ / “DBIのプレースホルダーで起こった謎な挙動 - $shibayu36->blog;” http://t.co/TxT2M6oEsi

2013-03-04 11:07:11
tsucchi @tsucchi

プレースホルダの実装はちょっと勉強してみたいし、追ってみようかな

2013-03-04 11:10:25
minemaz @minemaz

@tsucchi ちょうどOFFSET/LIMIT 使ってるところだったので大変在りがたい話です>元blog。危うく踏むところでした

2013-03-04 11:11:43
tsucchi @tsucchi

@minemaz お役に立ててよかったです。空白2つ入れるパターンが引っかかりそうだし、引っかかったときにハマりそうですね。。。

2013-03-04 11:27:47
tsucchi @tsucchi

予想はしてたがXSだったか。詰んだw

2013-03-04 11:22:41
tsucchi @tsucchi

当たり前すぎるけど、クエリを自前でパースしてるんだよな。そりゃバグくらいあるだろうって気はする。

2013-03-04 11:31:04
tsucchi @tsucchi

みつけた。たぶん dbdimp.c 606/607 行目だ。スペースが1つ以外だと limit_flag 立たないよなこれ。でもどうやってなおすんだコレ

2013-03-04 11:43:46
tsucchi @tsucchi

予想通りっぽい。SELECT * FROM Hoge limiT 1 とかもエラーになるw

2013-03-04 11:47:27
tsucchi @tsucchi

既知のバグには登録されてないっぽいね

2013-03-04 11:58:04
tsucchi @tsucchi

あ゛ 603行目のコメントに「it would be good to be able to handle any number of cases and orders」ってあるじゃん。問題あるのは認識してるっぽいな。まあレポートしとくか

2013-03-04 12:51:35
tsucchi @tsucchi

僕がメンテしてる PP のほうも、LIMIT のプレースホルダ周りはやっつけ実装してるから、気持ちは良く分かる。ましてや正規表現とか使えない XS 環境でなんて。僕だったら泣いちゃうレベル

2013-03-04 12:59:47
tsucchi @tsucchi

一応レポートしたった。でもこれ直さないだろうな。回避簡単だし、僕だったら絶対直さないw

2013-03-04 16:40:37
tsucchi @tsucchi

もしエレガントな修正が行われたら、パクろうw

2013-03-04 16:41:00