[pgsql-jp: 33709] Re: 【再質問】UPDATE のTrigger 内で発行したInsert がwait

TANIDA Yutaka tanida @ sra.co.jp
2004年 7月 20日 (火) 15:54:30 JST


谷田です。

On Tue, 20 Jul 2004 06:41:40 +0000
白神 正雄 <shiraga_masao2 @ hotmail.com> wrote:

> 現状、次のような処理でInsertがwait状態になってしまい、返ってきません。
> 
>   【OS:RedHat ES, DB:Postgres7.3.6】
>   TABLE_A : Updateトリガー(AFTER) ・・・C言語関数呼び出し
>      |
>      +−shell起動 <成功>
>      ・   |
>      ・   +−【WindowsXP】フォルダにsmbmount <成功>
>      ・   |
>      ・   +−C++で作成のexe(要するに実行形式)を起動
>      ・   ・   |
>      ・   ・   +−【WindowsXP】フォルダにある
>      ・   ・   ・   CSVファイルを読み込み、
>      ・   ・   ・   TABLE_Bにインサート
>      ・   ・   ・   ↑↑↑↑↑↑↑↑↑↑↑↑↑↑
>      ・   ・   ・   ここでinsert wait(ToT)
>      ・   ・   |
>      ・   ・   +−正常時戻り値0
>      ・   ・     I/Oエラーなどあれば戻り値1
>      ・   ・   |
>      ・   +−−+
>      ・   |
>      ・   +C++のexeの戻り値をそのままC言語関数に返す
>      ・   |
>      +−−+
>      |
>      +C++のexeが戻り値0ならTABLE_Aのフラグ=4
>            戻り値1ならTABLE_Aのフラグ=5
>      |
>      |
>     <終了>
> 
> 
> 上記の処理の中で、shell以下は、単体では、バリバリに動きます。
> 
> が、そのshellをトリガーとして登録した関数から起動するように
> すると、insert wait状態になり、一行もinesertできなくなるんです。

ところで、このINSERT文はどのロックを待っているんでしょうか?それが分から
ないことには、解決のしようがないと思うのですが。

とりあえず、select * from pg_locksの出力を調べてみてはいかがでしょうか。


-- 
TANIDA Yutaka <tanida @ sra.co.jp>




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