というわけで SQLite3-ruby を使った DBD を実装してみた。ほぼ実装は完了っぽいところまでこぎつけた。
SQLite は 型が非常に曖昧というか、いわゆる「型なし言語」となっているので、 SQLite3-ruby では結果は全部文字列になっちゃうという問題がある。んで、 SQLite3-ruby にはそのための型変換をしてくれる機能があって、データベースオブジェクトの type_translation を真にしておけばそれでいいんだけど、そうすると table_info がおかしくなるという問題にぶちあたった。
そこでよくわからなくなって諦めたのだが、考えてみれば table_info はきっと内部的にクエリを発行していて、しかしながらそれは特殊なテーブルであるので型の情報とかが取り出せず、型変換用のメソッドが死んでるんだろうということに気付いた。
それを直すのと、後は attr として渡すあたりのあれこれをやれば完了だな。
ところで、これって需要あるのだろーか? や、自分で使いたいからあれこれやってるんだけれども。
ってか今頃になって気付いたのだが、 DBD::SQLite は自前の拡張ライブラリを持っているわけで、これって SQLite3 に流用できないのかな。それができないくらい API も変わってるのか?