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

安田 広大 [E-MAIL ADDRESS DELETED]
2006年 8月 23日 (水) 14:19:05 JST


安田です。

以前報告した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:[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
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: Test.java
型:         application/octet-stream
サイズ:     911 バイト
説明:       Test.java
URL:        http://ml.seasar.org/archives/seasar-user/attachments/20060823/fd637562/attachment.obj 


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