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

Katsuhiko Okano k_okano @ po.ntts.co.jp
2004年 7月 6日 (火) 20:41:48 JST


岡野と申します。

並木 勝美 wrote:

> 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")




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