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

Shinobu Aoki [E-MAIL ADDRESS DELETED]
2008年 7月 30日 (水) 16:14:20 JST


青木です。

申し訳ございません、ML送信用にSQLを書き換えていました。
送付しましたSQLでは確かに再現しませんでしたので、
ご提示頂いたやり方で再現できるSQLに書き直しました。

SELECT * FROM (
SELECT * FROM EMPLOYEE E 
ORDER BY E.EMPLOYEE_NAME ASC, 
E.EMPLOYEE_ID DESC, 
E.EMPLOYEE_HIREDATE ASC)

カラム名は適当に長くしています。
カラム名を短くすると、時間はかかりますが処理は終わります。

> これは、chopOrderByのどの箇所が止まっていたのでしょうか?
>     protected String chopOrderBy(String baseSQL) {
>         Matcher matcher = patternOrderBy.matcher(baseSQL);
>         if (matcher.find()) {
>     ・・・

matcher.find() の呼び出しで止まっています。
もしかしたら待てば処理が終わるのかもしれませんが、
私の環境だと5分待っても処理が完了しませんでした。

Javaの環境はJDK 1.5.0_15です。

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

On Wed, 30 Jul 2008 14:57:51 +0900
Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]> wrote:

> 中村(taedium)です。
> 
> > いくつか試したところ、インラインビューを用いてなおかつ
> > インラインビューで用いるテーブルに別名をつけて、
> > ORDER BYで別名をつけて複数のカラムを指定すると
> > 再現するようです。(DAOのメソッドにPagerConditionを渡した場合)
> 
> テストコードなどで、該当のSQLを
> AbstractPagingSqlRewriterのchopOrderByメソッドに
> 直接渡した場合に現象が再現するか確認してもらえないでしょうか?
> 
> こちらで【問題となるSQL例】を試してみましたが
> 再現しませんでした。
> 
> > ソースを見てみると、org.seasar.dao.pager.AbstractPagingSqlRewriterの
> > chopOrderByメソッドで止まっていました。
> 
> これは、chopOrderByのどの箇所が止まっていたのでしょうか?
> 
>     protected String chopOrderBy(String baseSQL) {
>         Matcher matcher = patternOrderBy.matcher(baseSQL);
>         if (matcher.find()) {
>             return matcher.replaceAll("");
>         } else {
>             return baseSQL;
>         }
>     }
> -- 
> Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user

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



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