[Seasar-user:15211] [S2Dao]Oracleのページング処理に失敗する

Shinobu Aoki [E-MAIL ADDRESS DELETED]
2008年 7月 30日 (水) 11:25:48 JST


お世話になっております。
青木と申します。

プロジェクトで利用しているS2Daoを最新版にアップデートして、
OracleのROWNUMを使用するページングを利用してみた所、
特定のSQLでハングアップするケースがありましたので報告します。

用いたS2Daoのバージョンは1.0.48です。

【問題となるSQL例】
SELECT * FROM 
(SELECT * FROM DEPARTMENT D 
ORDER BY D.DNAME DESC, D.DEPTNO DESC)

いくつか試したところ、インラインビューを用いてなおかつ
インラインビューで用いるテーブルに別名をつけて、
ORDER BYで別名をつけて複数のカラムを指定すると
再現するようです。(DAOのメソッドにPagerConditionを渡した場合)

ソースを見てみると、org.seasar.dao.pager.AbstractPagingSqlRewriterの
chopOrderByメソッドで止まっていました。
ここで用いているORDER BYの正規表現に問題がありそうです。

ひとまずchopOrderByにfalseを指定するようにして回避しています。
なので急ぎではないのですが、ご確認頂けないでしょうか。

以上、宜しくお願い致します。

-- 
Shinobu Aoki <[E-MAIL ADDRESS DELETED]>



Seasar-user メーリングリストの案内