[Seasar-user:13309] Re: 【JdbcManager】 Postgresで forUpdateNowait()が使えない

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 3月 18日 (火) 03:30:07 JST


小林 (koichik) です.

Date:    Mon, 17 Mar 2008 22:15:44 +0900
From:    [E-MAIL ADDRESS DELETED]
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:13308] 【JdbcManager】 Postgresで forUpdateNowait()が使えない

> jdbcManegerを利用しているのですが、.forUpdateNowait() メソッドが利用できません。
> 
> 以下のようなエラーが表示されます。
> 
> Throwable:java.lang.UnsupportedOperationException: [ESSR0748]エンティティ(TTestEntity)の検索にFOR UPDATE NOWAITが指定されましたが、DBMS(postgre)ではサポートされていません。
> 
> しかしながら、Postgresは以下のSQLが通るのでnowaitをサポートしている様に思えます。
> select * from t_test for update nowait

こちらで軽く調べた限りだと,PostgreSQL 8.1 から
nowait がサポートされているようですね.

今のところ,PostgreDialect の対象バージョンを
明確にしていないのですが,8.0 以前はもうほとんど
使われていないということであれば,PostgreDialect は
8.1 以降限定ということでnowait をサポートしても
いいかもしれません.

しかし,8.0 以前もまだ多く利用されているなら,
PostgreDialect では nowait をサポートせず,
8.1 以降用に Postgre81Dialect とか新たに作って
対応するか,ということになると思います.

とはいえ,8.1 用,8.2 用,8.3 用...
という調子で各バージョン毎に対応する Dialect を
こちらで用意するのも大変というか無理があるので,
PostgreSQL を利用している人から 8.1 用とか 8.2 用の
Dialect を提供していただければ,それを S2JDBC に
含めますよ,というのが現実的かも.
他の RDBMS も同じですが.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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