[pgsql-jp: 29144] Re: setAutoCommit で Warning

Hiroshi Inoue Inoue @ tpf.co.jp
2003年 2月 19日 (水) 16:22:23 JST


井上です。

Daichi Ueura wrote:
> 
> 上浦です。
> 
> On Tue, 18 Feb 2003 22:17:18 +0900
> "T.Suzuki" <t_suzuki @ kenwood-eng.co.jp> wrote:
> 
> > hoge=# autocommit = off;
> > hoge=# select 1; commit; set autocommit = on;
> >
> > Warningのログは出ません。
> > ならば、psqlで実行した場合と、executeQuery()で実行した場合に
> > 問題があるのかと思い、次の処理をサンプルソース中で実行しました。
> >
> > rs = st.executeQuery("select 1; commit; set autocommit = on;");
> >
> > すると、Warningのログが出ました。
> PHPで実行してみたところ、Warningが出ました。
> JDBCだけの問題ではないようです。psqlとその他のインターフェースでは、
> SQLの投げ方が違うのでしょうか?
> (JDBC等はそのまま投げているが、psqlは3つに分けてるとか)

上記例では3つのコマンドが一つのコマンドのごとく処理されます。
autocommitが何であろうと一つのトランザクション内で処理され
(上記の場合はcommitが間に入っていて違いますが)戻ってきた
時の状態がautocommitのオン/オフによって異なることになります。

psqlはインテリジェント?なので自分でコマンドを分割して一つずつ
処理してしまいます。psqlを使ってこの動作を試すのは逆にかなり
難しいことになります。psql -c を使う位しか手段がありません。
 
Hiroshi Inoue
	http://www.geocities.jp/inocchichichi/psqlodbc/



pgsql-jp メーリングリストの案内