[pgsql-jp: 40945] Re: create language plpgsql databasename とは?

Itagaki Takahiro itagaki.takahiro @ gmail.com
2011年 10月 4日 (火) 22:39:15 JST


2011/10/4 tanaka <tanaka_hideo @ yahoo.co.jp>:
> 第 35章手続き言語
> のところに書かれている
> 「ハンドラそのものはC言語関数で、他のC言語関数と同様に、共有オブジェクトにコンパイルされ、要求に応じてロードされます。」
> が、実施されるという理解で良いでしょうか?

プロシージャ言語を含めた PostgreSQL の拡張モジュールは
一般的に、以下のステップを経て使えるようになります。

1. ライブラリ・ファイルをファイルシステム上に配置する。
   (.dll や .so の拡張子を持つファイル)
2. ライブラリ・ファイル内の関数を、PostgreSQL データベースに
   登録するために、登録用SQLを実行。
3. 実際にアプリから機能を使う際に、ライブラリがロードされる。

plpgsql のライブラリ・ファイルは、PostgreSQL本体と一緒に
インストール済みなので、通常は 1.の手順は要りません。
plpgsql 自体は、C言語で書かれていますね。

CREATE LANGUAGE は、2.に相当する操作で、データベースに
ライブラリを登録するための操作です。

そして、3.として、CREATE FUNCTION した関数を呼び出すと、
実際にライブラリがロードされ、実行されることになります。


……という感じで、イメージは伝わるでしょうか?

-- 
Itagaki Takahiro


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