Perlの最近のブログ記事

あー 超絶はまった・・・ Class::DBIにて、動的にEssentialを指定するとおかしくなるバグがある。 動的に というか、2回以上。 http://rt.cpan.org/Public/Bug/Display.html?id=14798 こんな風にrtCPANにも乗ってます。 1年前から超絶放置中。 まぁ もともと$model->columns(Essential => qw/hoge fuga moge/); っていうの自体動的にやること考慮されていないんだろうけど、 普段はIDだけの高速引きで、時と場合によっては必要な分だけ引きたいというのは結構ある。 あらかじめ必要な分を引いてやらなければ、ループでその行を使うたびにPrimaryKeyでのSELECTが走るからだ。 (10万行のテーブルとかだと全体へのsearchが1回。  あとはループで各行へのPrimaryKey引きが1回ずつの  合計10万1回SQLが走るとかエグいことになる) 結論から言えば、 Class::DBI::ColumnGrouperのadd_groupメソッドを以下のように変えてやれば直る。

sub add_group {
  my ($self, $group, @names) = @_;
  $self->add_group(Primary => $names[0])
    if ($group eq "All" or $group eq "Essential")
        and not $self->group_cols('Primary');
  $self->add_group(Essential => @names)
    if $group eq "All"
       and !$self->essential;
  @names = _unique($self->primary, @names) if $group eq "Essential";
  
  my @cols = map $self->add_column($_), @names;
  unless($group eq "All") {
    foreach my $col ($self->all_columns) {
      delete $col->{_groups}->{$group} if(exists $col->{_groups}->{$group});
    }
  }
  $_->add_group($group) foreach @cols;
  $self->{_groups}->{$group} = \@cols;
  return $self;
}

続きにて簡単な例をば。

Jcodeの2.00以降なんだが、
なんかconvertの挙動が0.88までと違う。

0.88まではconvertにz|hのオプションを渡した場合は
全角|半角変換した上で文字コードも変えて返してくれてたのだが、

2.00以降はz|hオプションがついてると全角|半角変換しかしてくれない。
と、言うかオプション渡してあるとオプションの動作しかしてくれない・・・

うーん ChangeLogにも書いてないけど、
これは意図した動作なのかな・・・

2週間前ほどから新しいWebフレームワークを作ろうとしてたのだが・・・

なんか結局これってCatalystじゃね? みたいな・・・(;´д`)
とりあえず作ってたのは途中でおいておいて、
Catalystでやってみることにした

タグクラウド

このアーカイブについて

このページには、過去に書かれたブログ記事のうちPerlカテゴリに属しているものが含まれています。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

OpenID対応しています OpenIDについて
Powered by Movable Type 4.261