[pgsql-jp: 32155] Re: PL/pgSQL の格納形式
Kazumasa Gotoh
kgotoh @ cic-kk.co.jp
2004年 1月 29日 (木) 14:57:57 JST
人から聞かれたんですけど、ちょっと即答できなかったので
皆さんにご相談です。(^^;
質問されたのは、「PL/pgSQL は ORACLE の PL/SQL みたいにバイナリ
で格納されるのか?」というものでした。
PostgreSQL のマニュアルを読んでみると、以下のように書いてあります。
1. 初めてその関数が(各セッションで)呼び出されたときにバイナリ形式の
命令ツリーを内部で作成する。
2. 各式や SQL コマンドが初めてその関数で使用される時に実行計画の
準備を行い、その後に式やコマンドが実際に実行される時に、その
準備された計画を再利用する。(計画の準備と保存を行う)
ここで、2. の方は良いのですが、1. の「初めて呼び出された時」って
どのタイミングの事なの? が、よくわかりません。(^^;
create or replace function my_func() retruns integer as '
ホゲ ' language 'plpgsql';
とやって、登録される時が「初めて」ではないかとも思うのですが、
「(各セッションで)呼び出される」というと、当該 DB セションで
初めて実行される時ともとれます。どうなのでしょうか?
実行効率で考えれば、登録時に PL/pgSQL インタプリタ用のバイナリへ
変換した方が良いとは思うのですが、上記の書き方では何とも言えない
ような…
ソースを追うほどの根性が今はないので、(^^; どなたかご教示願えれば
幸いです。 7.4.1 オンリーの話で構いません。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(株) セントラル情報センター
後藤和政 kgotoh @ cic-kk.co.jp
pgsql-jp メーリングリストの案内