[Seasar-user:4407] Re: [S2Dao]pager使用時のSQLの不具合

AGATA Toshitaka [E-MAIL ADDRESS DELETED]
2006年 8月 23日 (水) 14:49:29 JST


あがたです。

おそらく、JDBCの接続文字列にパラメータ 
「protocolVersion=2」が
付いていないのが原因ではないかと思います。

詳細は、http://s2dao.seasar.org/ja/ 
s2pager.html#LimitOffsetを
ご覧くださいませ。

■実行結果
・protocolVersion=2無しの場合
 select * from TEST_TABLE where TEST_TABLE.NAME like %TEST%

・protocolVersion=2付きの場合
 select * from TEST_TABLE where TEST_TABLE.NAME like '%TEST%'

以下のJDBCドライバで確認しました。
- postgresql-8.1-404.jdbc3.jar
- postgresql-8.1-405.jdbc3.jar)

以上です。

On 2006/08/23, at 14:19, 安田 広大 wrote:

> 安田です。
>
> 以前報告したpager使用時に埋め込み変数がシングルクォー 
> テーションで囲まれない不具合の件ですが、原因が特定できましたの 
> で、報告します。
>
> この問題は、PagerConditionを通して、s2daoまたは 
> s2jdbcを利用し、かつSQLの検索条件として、文字列などシン 
> グルクォーテーションで囲む必要があるものを使用した場合に起こる 
> ようです。
>
> 原因は、PagerResultSetFactoryLimitOffsetWrapperクラス内の 
> createResultSetで
> PreparedStatementに対してtoStringを呼び出している箇所で 
> す。この時点で、Postgreのドライバの問題で、シングル 
> クォーテーションが付加されないようです。
>
> 具体的には、s2-dao-xxx.jarの
> org.seasar.dao.pager.PagerResultSetFactoryLimitOffsetWrapperの 
> 88行目の
> 	String nativeSql = ps.toString();
> を見ていただければ、分かると思います。
>
> サンプルコードも添付しました。実行してもらえれば、
> System.out.println(stmt)で出力されるSQLにシングルクォー 
> テーションが付加されていないのが確認できると思います。実行自体 
> は正しくできるため、内部的にシングルクォーテーションを付加して 
> いると思われます。
>
> 私が再現した環境は、
> ・S2dao-1.0.33
> ・S2Container 2.3.8
> ・PostgreSQL8.1.3
> ・postgresql-8.1-405.jdbc3.jar
> です。
>
> 何か解決策などあれば、教えていただきたいです。
> 以上よろしくお願いします。
>
> --
> 安田 広大([E-MAIL ADDRESS DELETED]>
>
> -----Original Message-----
> From: [E-MAIL ADDRESS DELETED] [mailto:seasar-user- 
> [E-MAIL ADDRESS DELETED]] On Behalf Of Hirotaka HONMA
> Sent: Saturday, August 05, 2006 4:49 PM
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:4266] Re:[S2Dao]pager使用時のSQLの 
> 不具合
>
> 本間@稚内 です。
>
> On 8/4/06, 安田 広大 <[E-MAIL ADDRESS DELETED]> wrote:
>
>> S2Daoで、pager使用時に埋め込み変数が'(シングル 
>> クォーテーション)
>> で囲まれずに置換されてしまう不具合があるようなので、報告しま 
>> す。
>
> 1.0.33で試してみたのですが、再現できませんでした。
> お手数ですけれど、再現可能なプログラムを頂けますか?
> # スタックトレースも頂けると嬉しいです。
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user
> <Test.java>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user




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