[pgsql-jp: 39286] Re: 非同期コマンドの複数実行
河本陽一
komoto.yoichi @ kcc.co.jp
2008年 3月 14日 (金) 10:47:16 JST
こうもとです。
Hiroki Kataoka さんの書いたこと:
> 1.データ取得(初回はスキップ)
> 2.データ取得要求
> 3.データ処理(初回はスキップ)
そうですね。実際に呼び出す関数だと、
1.PQsendQueryParams()
2.PQgetResult() # 1.の結果を取得
3.PQsendQueryParams()
4.2.で取得したデータの処理
5.PQclear() # 2.のエリアを開放
6.PQgetResult() # 3.の結果を取得
7.PQsendQueryParams()
8.2.で取得したデータの処理
9.PQclear() # 6.のエリアを開放
:
となります。
このとき気になったのが、PQgetResult()で取得したデータの領域が、
PQclear()を呼ぶまで本当に保持されるのかということです。
PQsendQueryParams()で消える情報があるのではないかと思っていました。
しかし、PQclear()の説明を読むと、「新しい問い合わせを発行する場合
でも、接続を閉じてしまうまでは PGresult は消えません。」とあるので、
次の要求をしても消えないということで安心しました。
ということで、PQclear()のタイミングをずらすことで、取得要求をしつ
つ処理を行うことにします。
======================================================================
河本陽一(こうもとよういち)
mailto:komoto.yoichi @ kcc.co.jp
pgsql-jp メーリングリストの案内