[pgsql-jp: 36929] Re: libpqでPQprepareで準備済みのクエリプランの検出

Yasuo Ohgaki yohgaki @ ohgaki.net
2006年 3月 27日 (月) 11:54:36 JST


大垣です。

Tatsuo Ishii wrote:
> 石井です.
> 
>> 大垣です。
>>
>> libpqのPQprepareで準備済みのクエリプランを最も効率良く検出する方法はどちらに
>> なるでしょうか?
>>
>> 1) PQexecPreparedで取りあえずクエリプランを実行してみてエラーになったらクエリプラン
>> は未定義とする方法。
> 
> 試しに実行してみる方法では,万が一実行して欲しくないクエリプランの場合,
> まずくないでしょうか?
> 
>> 2) 空のクエリでPQprepareを実行してみてエラーになったらクエリプランが未定義とする方法。
>                                                                       ~~~~~~定義済みの間違い?

定義済みの間違いでした。

> 
>> おそらく1の方がパーサなどが初期化されない分効率的と思いますがご存知の方、教
>> えてください。他にもっと効率的にクエリプランが定義済みか検出する方法がある場
>> 合もお願いします。
> 
> EXPLAIN EXECUTEでエラーにならなかったらそのクエリプランは在する,って
> いうのでは如何でしょう?

やはりそれが一番簡単ですよね。PHPのpg_executeはプランが定義済みだとE_WARNING
エラーがでるようになっていたのでこれから修正します。

> 
> ちなみに,8.2にはpg_prepared_queriesというviewがあって,prepared
> statementのリストが取れます.

なるほど。

ありがとうございました。

-- 
Yasuo Ohgaki : yohgaki @ ohgaki.net : http://www.ohgaki.net/





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