[pgsql-jp: 33520] [External mail]Re: pqFlush() -- couldn't send data: errno=0の意味が判りません

並木 勝美 katsumi-namiki @ machida.co.jp
2004年 7月 7日 (水) 07:51:22 JST


岡野殿、有り難うございます。namikiです。
お陰様で解決できました、以下の通りです。

> 
> > PL/pgSQLで多項目のテーブルにインサートするプロシージャを作ってい
> > ますが、以下のメッセージがでてクリエイトできません。項目数かサイズ
> > が大き過ぎるようですが、項目を減らしても不明なメッセージが出ます。
> > 恐れ入りますが、何方かアドバイスお願い致します。
> > 
> > 環境は、RedHat7.1 PostgreSQL7.3.2、
> > テーブルは行サイズが2048バイト、項目数105です。
> > 
> > ーーメッセージ(10項目位のテスト時)ーー
> > SQL実行中に以下のエラーが発生しました。
> > pqFlush() --  couldn't send data: errno=0
> > No error
> > ーー(105項目フル指定の場合)ーー
> > SQL実行中に以下のエラーが発生しました。
> > PQsendQuery() -- query is too long.  Maximum length is 16382
> 
> 
> 再現性について書かれていなかったので、はずしていたらすみません。
> 何かのライブラリ(libpq?)が古いのではないでしょうか。
> 
> http://www.jp.redhat.com/manual/Doc71/RHDOCS/rhl-ig-x86-ja-7.1/s1-guimode-sel-group.html
> を見ると、RedHat7.1には個別パッケージとしてpostgresqlがインストールできるようですが、
> RedHat7.1のリリース日から考えてpostgresql-7.3.2よりは古いものだと思います。
> 
> また、ソースファイルを上記の"query is too long"でgrepしたところ、
> 7.0.3まではあり、7.1からはなくなっていました。
> 7.1のHISTORYファイルには、Bug Fixesとして
> 60行目> Prevent query expressions from leaking memory (Tom)
> とあるので、それまではクエリの書き方によってはメモリリークが発生していたのかもしれません。
> 
> -- 
> ----------------------------------------
> Katsuhiko Okano
> k_okano @ po.ntts.co.jp
> NTT Software Corp. (division "NBRO-PT6")
> 

仰せの通りです。環境のRedHat7.1 PostgreSQL7.3.2については、ある程度の
誤差を覚悟してセットアップしましたが、どうやらクエリの内容によって動作
(結果)が異なるようです。早速適正なバーション構成にします。
もう一つは、ご指摘から使っているSQLツールのバージョンについても思
い当たることがあり、これをバージョンの整合する別のツールに変えたところ、
プロシージャの変更なく正常にコンパイルできました(動作も正常です)。

要因としては、ライブラリのバージョン不整合と思われます。恥かしながら
甘い判断が起こした異常であり。これを機に今後は注意してセットアップし
ます。ご指導には、重ねて深く感謝申し上げます。

Katsumi-Namiki



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