[Seasar-user:16546] Re: [S2Pager(S2Dao)]細かい要望2点

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2008年 12月 24日 (水) 13:45:53 JST


中村(taedium)です。

> 1点目、count のためのSQLで、
> パフォーマンスのために order by 句を取り除く際の正規表現について、
> AbstractPagingSqlRewriter
> > "order\\s+by\\s+([\\w\\p{L}.`\\[\\]]+(\\s+(asc|desc))?\\s*)(,\\s*[\\w\\p{L}.`\\[\\]]+(\\s+(asc|desc))?)*\\s*$"
> となっているところ、
> > "order\\s+by\\s+([\\w\\p{L}.`\\[\\]]+(\\s+(asc|desc))?\\s*)(,\\s*[\\w\\p{L}.`\\[\\]]+(\\s+(asc|desc))?\\s*)*$"
> にして頂けないかなぁと。
> でないと、order by 句が3つ以上のカラムからなる場合に中間部での空白の入り方がシビアになってしまいます。(2個目以降のカンマの前に空白や改行が許されない)
> ホント言うと、order by句に関数使ってる人とか居るので、いっそ「ここはOrderByだからカウントん時は要らないんです」なマークアップが書けると一番良いんですが。
> 
> 2点目、OracleのRownumを使ったPaging用SQLを作る部分、
> OracleRownumPagingSqlRewriter
> > SELECT * FROM (SELECT ROWNUM AS S2DAO_ROWNUMBER, S2DAO_ORIGINAL_DATA.* FROM 〜
> となっているところを、
> > SELECT * FROM (SELECT S2DAO_ORIGINAL_DATA.*, ROWNUM AS S2DAO_ROWNUMBER FROM 〜
> のように、ROWNUM を後ろにしていただけないかなぁと。

1点目の正規表現と、
2点目のROWNUMの順序については
対応の方向でコミッタ間で相談してみます。

1点目の「ここはOrderByだからカウントん時は要らないんです」なマークアップ
については、AbstractPagingSqlRewriterを拡張して
独自に対応した実装を作成するのがいいかもしれません。

> (SELECT結果が単一行じゃないと動かないようなのですが、これもintの配列やIntegerのリストで取り出せるともっとうれしい・・・ってそれはS2PagerではなくS2Daoへの要望になりますが・・・まだよく確認していないので。。。)

S2Dao 1.0.49ならば、intの配列やIntegerのリストで結果を取れるはずですよ。
(昔のバージョンでは対応していませんでしたが)
もし動かなければ、現象を教えてください。

-- 
Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>



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