[s2container-php5:124] Re: Solaris で RELNO の機能を利用したときのS2Dao_HashMapについて

Yusuke Hata [E-MAIL ADDRESS DELETED]
2008年 5月 8日 (木) 23:53:49 JST


ハタです。
ものすごーく返答が遅くなってしまいました。もうしわけありません。

Solarisの環境はもっていないので、すぐに
該当環境でテストすることができないですが、
いただいたファイルでOSXな環境で試してみたところ、
用意しているテストは通るみたいでした。
近いうちに反映させてもらいます。

また、Solaris環境も整えてテストしてみるようにしてみます。
リリースは…今のところ未定です。

以上です、よろしくお願いします。
--  
Yusuke Hata <[E-MAIL ADDRESS DELETED]>
blog: http://blog.xole.net/





On 2008/04/16, at 4:17, Noriyuki ITAGAKI wrote:

> 板垣と申します。
>
> 以下の環境で利用させていただいております。
>
> ・s2dao.php5-1.1.2.tar.gz
> ・s2container.php5-1.1.3.zip
> ・Oracle10g
> ・Apache/2.0.61 (source) PHP/5.2.4
> ・Solaris10(SPARC)
>
>
> Solaris で RELNO の機能を利用したとき、連結される
> 外部結合テーブルのBeanがおかしくなるようです。
> ※ 同じコードでWindowsでは再現しません。
>
> 「S2Dao_RelationRowCache.class.php」を確認させていただきまし 
> たが、
> 以下のようになっているようです。
>    39: return $this->getRowMap($relno)->get($key->hashCode());
>    43: $this->getRowMap($relno)->put($key->hashCode(), $row);
>
> S2Dao_RelationKey::hashCode() の値が偶然一致しているのかと思い、
> 調査しましたが、別の値になっておりました。
> ※ 偶然一致してしまう可能性はないでしょうか。
>
> おかしくなるデータを確認したとこ 
> ろ、S2Dao_RelationKey::hashCode()
> の値がマイナスになっているもののように思います。
>
> S2Dao_HashMap のソースでは、array() をラッピングするように
> なっておりますので、数値(マイナスや十分に大きな値)を設定した
> ときの挙動は保障されていないかもしれません。
> ※ なぜか、Windows版では、マイナスは問題なさそ 
> うですが、十分に
>   大きな値を設定したとき、想定する結果にはなりませんでした。
>     > 「十分に大きな値」と「十分に大きな値+1」は、
>        同じキーとして扱われる。
>
> java のHashMapのように、キーとして、リテラルな数値は 
> 設定できない
> 方が良いと思いますが、いかがでしょうか。
>
> 現在、「S2Dao_HashMap.class.php」を添付のファイルのよ 
> うに修正し、
> 「S2Dao_RelationRowCache.class.php」ファイルを以下のように
> 修正して運用しておりますが、何か不都合や、別のアドバイスが
> ございましたら、ご教示いただけると幸いです。
>  39: return $this->getRowMap($relno)->get($key);
>  43: $this->getRowMap($relno)->put($key, $row);
>
>
> 既出の問題の場合、または、PHP.iniの設定によるものの場 
> 合は、
> お許しください。
>
>
> 以上です。
> < 
> S2Dao_HashMap 
> .class.php>_______________________________________________
> S2Container-PHP5 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/s2container-php5



S2Container-PHP5 メーリングリストの案内