CDBI

MySQL MMM利用時に自動的に再実行するClass::DBI用のプラグイン

MySQL MMM利用時に自動的に再実行するClass::DBI用のプラグイン MySQL MMMはなかなかよさげなのですが、writerの切り替え時に実行中のSQLがあるとエラーになってしまい困るわけですよ。 AutoCommitで使っているので失敗したら再実行すればいいので、SQLを発…

Class::DBI::Sweetで外部結合(など)を使う - Class::DBI::Sweet::More

Class::DBI::Sweetで外部結合(など)を使う - Class::DBI::Sweet::More というわけでClass::DBI::Sweetで外部結合(など)を使えるようにしたClass::DBI::Sweet::Moreを作ってみました(CPAN)。 NAME Class::DBI::Sweet::More - More sweet Class::DBI::Sw…

Class::DBI::Sweetで外部結合を使いたい!

Class::DBI::Sweetで外部結合を使いたい! 目次 [Perl][CDBI][SQL] Class::DBI::Sweetで外部結合を使いたい! 各RDBMSのJOIN構文 Class::DBI::Sweet::SQL::Abstractによるマジック Class::DBI::Relationshipを利用する で、作ったのが Class::DBI::Sweet::Mo…

Class::DBI::Sweet::Pie 0.04

Class::DBI::Sweet::Pie 0.04 DISTINCTが通るようにしてCPANにアップロードしました。 今後の予定は HAVINGを使えるようにするインターフェイスをいじる search_with( $alias => $col_name, ... )のほうがいいかなとか あたり。たぶん。 追記 testにDISTINCT…

Class::DBI::Sweet::PieでDISTINCTが使えない件について

Class::DBI::Sweet::PieでDISTINCTが使えない件について うっかりしてたというか、使う人がいるとは思わなかったのですよ。。。 カラムの先頭にmeが勝手に付くので「me.distict id」みたいになってしまいCOUNT DISTINCTができない・・・ まぁでもこれはSweet…

Class::DBI::Sweet::Pie - Class::DBI::Sweet用の集約関数モジュール

Class::DBI::Sweet::Pie - Class::DBI::Sweet用の集約関数モジュール CPANに上げました。http://search.cpan.org/~asakura/Class-DBI-Sweet-Pie-0.03/ 名前 Class::DBI::Sweet::Pie - Class::DBI::Sweetで集約関数を扱うためのモジュール 概要 package MyDat…

Class::DBI::Plugin::AggregateFunction

Class::DBI::Plugin::AggregateFunction テストも作ったので公開。 CPANにはまだ上げてません。 上げました――が、ドキュメントがおかしい orz 同じバージョン番号で上げなおしちゃいけないんだっけ?

has_manyなテーブルでAND検索 - Class::DBI::Sweet::Cake

has_manyなテーブルでAND検索 - Class::DBI::Sweet::Cake MyData::Article->search({ 'tags.name' => { -and => [qw/ foo bar baz /], }, }); http://asakura.g.hatena.ne.jp/asakura-t/20060330/1143721817――とか出来るようになるモノを作ってみた。 NORを…

2006-03-31

patchを送るべきか、動的にpatchをあてるべきか tagのAND検索をするにはhas_manyなテーブルに対して-andや-norを指定してJOINできればいいんだけど、そのためにはClass::DBI::Sweetが使っているClass::DBI::Sweet::SQL::Abstractを変更しなくちゃ駄目っぽい…

2006-03-30

確かにtagのAND検索をするモジュールが必要だ。 ついさっき はてなブックマークだと、入力時に一旦 parse して分解してしまって、正規化した tag テーブルにひとつのタグでひとつのレコードという形で保存してある。これだと tag に index 張れば普通に検索…

2006-03-28

Class::DBI::Sweet::Pie - Class::DBI::Sweetに集約関数を追加する これでClass::DBIで集約関数が使いたくなっても困らないぞ、と。 あとはドキュメントを整備したりテストコードを書けばいいかな……。 YAPCが終わる頃までにはCPANに登録したいと思うんだけど…

2006-03-27

Class::DBI::Sweet::Pie 気が向いたので集約関数を追加するClass::DBI::Sweet用のプラグインを作ってみました。 Class::DBI::Plugin::AggregateFunctionとか作ってもいいのかもしれません。 package MyData::CD; use base qw/Class::DBI::Sweet/; use Class:…

Class::DBI::Sweet用のプラグインいろいろ

Class::DBI::Sweet用のプラグインいろいろ ある程度汎用的に使えそうなので置いときます。 CDBI::Sweet用のプラグインはCDBI::Sweet::Topping::Fooでええんじゃろか。。。 SUM( column ) するプラグイン package Class::DBI::Sweet::Topping::Sum; =head1 SY…

Class::DBI::Sweetで集約関数を使う方法

Class::DBI::Sweetで集約関数を使う方法 そのうち本家で対応するんじゃないかって気もしますが。 とりあえずSUM()だけ。 package MyData::CD; use Class::DBI::Sweet 0.08; # 0.05では動きません。0.06以降なら大丈夫かも(未確認)。 __PACKAGE__->set_sql(…

2006-03-08

Class::DBIのsearchなどで発行されるSQLを確認するTips Class::DBIを使ってるときに「どんなSQLを発行してるんじゃろ?」と思うことはありませんか? 僕はあります*1。 なんかいい方法がないかなー、と思ってたんですが、Class::DBI::Plugin::Iteratorを使っ…

Class::DBIが3.0.1になってるんですが、

Class::DBIが3.0.1になってるんですが、 何がどう変わったんでしょうか。 怖くて使えない……。 追記 速攻で3.0.3になってるし。 うーん。 さらに追記 http://blog.bulknews.net/mt/archives/001810.html Class::DBI の新バージョンが立て続けにリリース。Chan…

Class::DBI::View::Havingにパッチ再び

Class::DBI::View::Havingにパッチ再び searchが使えなくてびっくり。 昨日はAbstractSearchのsearch_whereを使ってたので気がつきませんでした。。。 --- Having.pm +++ Having.pm @@ -20,6 +20,26 @@ $sth->execute(); return $real_class->sth_to_objects…

Class::DBI::View::HavingとClass::DBI::Plugin::Iterator

Class::DBI::View::HavingとClass::DBI::Plugin::Iterator 併用するとうまく動きませんでした。 調べてみると、Class::DBI::View::Havingに下記のパッチをあてると問題ない模様。 ついでにClass::DBI::Plugin::Iteratorも微調整。 --- Class/DBI/View/Having…

まかまかさん、ありがとうございました。

まかまかさん、ありがとうございました。 動作検証をお願いした形になってしまってすみません。 似たようなものを実装していたみたいだったので、つい……。 importルーチンでドライバの判定をされていて(私も最初そうしたのですが)これだとアプリケーション…

Class::DBI::Plugin::Iteratorの0.10を作ってみた。

Class::DBI::Plugin::Iteratorの0.10を作ってみた。 MySQLの時は自動的にClass::DBI::Plugin::Iterator::mysqlを使い、それ以外の時はClass::DBI::Plugin::Iterator::subqueryを使うように変更しました。 サブクエリが使えない場合はHAVINGを使い、HAVINGも…

自分で告知する前に他所で告知されてしまうのも情けない話ですが*1、

自分で告知する前に他所で告知されてしまうのも情けない話ですが*1、 それよりもtar.gzのバージョンナンバーと$VERSIONが一致していなくってとほほです orz ちなみにバージョンを上げて変わったのはpodの配置を変えたこと*2くらいです。 ちなみに登録が遅く…

Class::DBI::View

Class::DBI::View Class::DBI的には「VIEW使えよ」って感じなんじゃないのかなと、個人的には感じてるのですけれど。PostgreSQLならVIEWも使えるので、そちらのほうがいいんじゃないでしょうか。 と書きましたが、Class::DBI::Viewというのがありました。 VI…

2005-01-13

Class::DBI::Plugin::Iterator 0.07 Class::DBI::Plugin::Iterator::subqueryを追加しました。 subqueryのcountを標準にしない理由 ひとつ目には「パフォーマンスが悪そう」という点と、もうひとつは「Class::DBIを使っている人は複雑なクエリーを使わないん…

Class::DBI::Plugin::Iterator 0.06

Class::DBI::Plugin::Iterator 0.06 makamakaさんの指摘による、先読み部分を変更しました。 他の変更点は、allメソッドの実装方法の変更とか、count時のSQLがエラーになった場合の対策あたり。 とりあえず当初考えてたことは一通り実装したので、あとはドキ…

2005-01-10

Class::DBI::Plugin::Iterator 0.05 makamakaさんから指摘があった点をいくつか修正しました。 修正点 とりあえず、 ORDER BY があったら削るGROUP BY があったらCOUNT(DISTINCT cols)にてカウントする ようにしました。 GROUP BYのほうはエイリアスを使って…

2004-12-22

Class::DBI::Cacheable 訪問者が多いうちに聞いてみよう*1。 Class::DBI::Cacheableは前の会社にいたときに使おうと思ってたんだけれど、Cache::FileCacheを使っているのでサーバが複数あるとupdateしたときに不整合が起こりそうな気がして使うのをやめた記…

2004-12-21

CPANに登録ですか FeedBack にも導入してみようかな。ちなむと、CPAN に up 希望です。Class::DBI のパフォーマンスを上げる Class::DBI::Plugin::Iterator CPANに上げるのはいいんですが、誰かやりかた教えてください。 ――と思ったらこんなドキュメントを発…

Class::DBI::Plugin::IteratorのTips

Class::DBI::Plugin::IteratorのTips 簡単にベンチマークをとったところ、search等*1でマッチした件数に対して実際に使うのが半分以下で、sliceすればほぼ確実にパフォーマンスが上がるみたいです。逆にnext等を使うとかなりパフォーマンスが落ちます。 とい…

Class::DBI::Plugin::Iterator

Class::DBI::Plugin::Iterator ダウンロードできるようにしました。 ちなみにテストは適当です。ドキュメントもありません。 使い方 package Films::FavoriteFilms; use base 'Class::DBI::mysql'; use Class::DBI::Plugin::Iterator; # ←これを追加 __PACKA…

Class:DBI::AutoLoaderの使い方

Class:DBI::AutoLoaderの使い方 mixiで「Class::DBI::AutoLoaderの使い方がわかんない」と書いてる人がいたけれど、何が分からないんだろう。 サンプルに書かれているとおり、 use Class::DBI::AutoLoader ( dsn => 'dbi:mysql:database', username => 'user…